Hibernate中实体对象的生命周期

Hibernate中实体对象的生命周期

ID:38142451

大小:44.00 KB

页数:3页

时间:2019-05-28

Hibernate中实体对象的生命周期_第1页
Hibernate中实体对象的生命周期_第2页
Hibernate中实体对象的生命周期_第3页
资源描述:

《Hibernate中实体对象的生命周期》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Hibernate中实体对象的生命周期实体对象的生命周期在Hibernate应用中是一个很关键的概念,正确的理解实体对象的生命周期将对我们应用Hibernate做持久层设计起到很大的作用.而所谓的实体对象的生命周期就是指实体对象由产生到被GC回收的一段过程.在这过程中我们需要理解的就是实体对象生命周期中的三种状态.1.自由状态(Transient)所谓的Transient状态,即实体对象在内存中自由存在,与数据库中的记录无关,通常是我们的J2EE中VO,并没有被纳入Hibernate的实体管理容器.

2、1    Test test = new Test();2        test.setName("energykk");3        //此时的test对象处于Transient(自由状态)并没有被Hibernate框架所管理4        2.持久状态(Persistent)何谓Persistent?即实体对象已经处于被Hibernate实体管理容器容器所管理的状态.这种状态下这个实体对象的引用将被纳入Hibernate实体管理容器容器所管理.处于Persistent状态的实体对象,对它

3、的变更也将被固化到数据库中.在J2EE中通常指的是一个PO.Transaction tr = session.beginTransaction();        session.save(test);        //此时的test对象已经处于Persistent(持久状态)它被Hibernate纳入实体管理容器        tr.commit();        Transaction tr2 = session.beginTransaction();        test.setName

4、("xukai");        //在这个事务中我们并没有显示的调用save()方法但是由于Persistent状态的对象将会自动的固化到        //数据库中,因此此时正处在Persistent状态的test对象的变化也将自动被同步到数据库中        tr2.commit();处于Persistent状态的实体可以简单的理解为:如果一个实体对象与session发生了关联,并且处于session的有效期内,那么这个实体对象就处于Persistent状态.3.游离状态(Detached

5、)处于Persistent状态的实体对象,其对应的session关闭以后,那么这个实体就处于Detached状态.我们可以认为session对象就是一个Persistent的宿主,一旦这个宿主失效,那么这个实体就处于Detached状态.session.close();        //与test对象关联的session被关闭,因此此时的test对象进入Detached(游离状态)                session2 = HibernateSessionFactory.getSessi

6、on();        Transaction tr3 = session2.beginTransaction();        session2.update(test);        //此时正处于Detached状态的test对象由于再次借助与session2被纳入到Hibernate的实体管理容器所以此时的        //test对象恢复到Persistent状态        test.setName("jjjj");        tr3.commit();          

7、      session2.close();既然Transient状态的实体与Detached状态的实体都与Hibernate的实体管理容器没有关系,那他们到底存在哪些差异?差异就在于处于Transient状态的只有一个Name的属性.此时的test对象所包含的数据信息仅限于此,他与数据库中的记录没有任何瓜葛.但是处于Detached状态的实体已经不止包含Name这个属性,还被赋予了主键也就是通常POJO里的id属性,由于id是主键,他可以确定数据库表中的一条唯一的记录,那么自然的处于Detach

8、ed状态的实体就能与数据库表中拥有相同id的记录相关联.这就是他们之间所存在的差异,简而言之,Transient状态的实体缺乏与数据库表记录之间的联系,而Detached状态的试题恰恰相反.只不过是脱离了session这个数据库操作平台而已.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。