hibernate中对象的三个状态理解
2013-06-19 00:00
423 查看
Hibernate中对象的三大状态
一、transient(临时态)特点:通过new操作创建出来的对象,此时的对象未被纳入session管理,数据库中没有相对应的记录
二、persistent(持久化状态)
例如:在service层可以实现更新数据库数据
Syuser syuser=userDao.get(Syuser.class, user.getId());
syuser.setName(user.getName());
persistent状态的对象被纳入了session管理,session就相当于Hibernate的一个缓冲区,被纳入session
管理的对象(持久化对象)时刻被hibernate所监视,persistent态的对象属性一旦发生改变,就会被
hibernate察觉,并会生成相应的sql语句(但并未立即与数据库交互),当session提交时,hibernate会
清理缓存(也叫脏数据检查),这时候就会和数据库同步(通过底层的JDBC与数据库交互)。
注释:hibernate清理缓存的方式,是采用快照比对的方式(持久化对象的每次变动都会被记录下来)
三、detached(托管状态/离线状态)
detached状态的对象,数据库中存在,但未被纳入session管理。
如果对detached状态的对象加以修改,那么就还得将其纳入一个新的session对象管理,并且还要显示的
update(),update后的对象又成为了persistent状态了
detached状态的对象是如何产生的呢?
有两种方式:
1、对象被纳入session管理后,此session清空或者关闭时,这是的对象就称为detached态了
2、可手动的构造detached态的对象,通过new操作,new出来的对象,手动setId()将id设成数据库中
已经存在的,这时的对象也是detached状态的。(一般不建议采用此法)
一、transient(临时态)特点:通过new操作创建出来的对象,此时的对象未被纳入session管理,数据库中没有相对应的记录
二、persistent(持久化状态)
例如:在service层可以实现更新数据库数据
Syuser syuser=userDao.get(Syuser.class, user.getId());
syuser.setName(user.getName());
persistent状态的对象被纳入了session管理,session就相当于Hibernate的一个缓冲区,被纳入session
管理的对象(持久化对象)时刻被hibernate所监视,persistent态的对象属性一旦发生改变,就会被
hibernate察觉,并会生成相应的sql语句(但并未立即与数据库交互),当session提交时,hibernate会
清理缓存(也叫脏数据检查),这时候就会和数据库同步(通过底层的JDBC与数据库交互)。
注释:hibernate清理缓存的方式,是采用快照比对的方式(持久化对象的每次变动都会被记录下来)
三、detached(托管状态/离线状态)
detached状态的对象,数据库中存在,但未被纳入session管理。
如果对detached状态的对象加以修改,那么就还得将其纳入一个新的session对象管理,并且还要显示的
update(),update后的对象又成为了persistent状态了
detached状态的对象是如何产生的呢?
有两种方式:
1、对象被纳入session管理后,此session清空或者关闭时,这是的对象就称为detached态了
2、可手动的构造detached态的对象,通过new操作,new出来的对象,手动setId()将id设成数据库中
已经存在的,这时的对象也是detached状态的。(一般不建议采用此法)
相关文章推荐
- Hibernate持久化对象的三个状态
- Hibernate的学习之路十(持久化对象的三个状态)
- hibernate对象的状态的理解(第五天)
- Hibernate的学习之路十(持久化对象的三个状态)
- hibernate 持久化对象的三个状态
- Hibernate的学习之路十(持久化对象的三个状态)
- 我对hibernate的对象的3种状态的理解
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate 对象状态的理解
- hibernate持久化对象的三个状态
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate的学习之路十(持久化对象的三个状态)
- 【SSH三大框架】Hibernate基础第三篇:实体对象的三种状态以及get、load、persist三个方法的详解
- 【Hibrenate学习之路2】Hibernate对象三个状态
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate的学习之路十(持久化对象的三个状态)
- Hibernate旅程(三)Hibernate持久化对象的三个状态
- 深入学习Hibernate持久化对象的三个状态
- Hibernate的学习之路十(持久化对象的三个状态)