hibernate高级特性_1

2008-02-23 09:47:21来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Hibernate对象生命周期内的三种状态
1. transient(自由状态)
自由状态就是Java对象创建出来,在内存中自由存在,与数据记录无关
2. Persistent(持久状态)
持久状态就是处于hibernate框架所管理的状态。这种状态下,实体对象的引用被hibernate容器加以管理。
3. Detached(游离状态)
游离状态就是在java对象所对应的session实例关闭后所处的状态

处于自由状态的对象,可以通过Session.save()转换为持久状态,同样,一个对象由Session.load()加载,也处于持久状态

Session可以看作是持久状态对象的宿主。如果Session失效,则对象就变为游离状态

Session.delete()可以使处于持久状态的对象变为自由状态

自由状态与游离状态区别


处于游离状态的对象可以再次同Session关联变为持久状态
OrderItem oi = new OrderItem();
oi.setItemNum(1);
oi.setOrderDetail( "TV set" );
oi.setOrderSeri( "12345" );

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(oi);
tx.commit();
session.close();
此时,oi处于游离状态

在另外一段代码中出现
Session session2 = sessionFactory.openSession();
Transaction tx2 = session.beginTransaction();
session2.update(oi);
oi.setOrderDetail( "television" );
tx2.commit();
session2.close();

此时,当session2.update(oi)执行后,再执行oi.setOrderDetail(),可以发现数据库中的数据已经改变了,而我们并没有显示的将oi变为持久状态

自由状态与数据库记录无关,我们不能通过处于自由状态的对象来搜索数据库。而处于游离状态的对象虽然与Session脱离,但是我们可以通过它来寻找数据库中相应的记录

上一篇: java多线程,什么时候让我跨过你高高的门槛
下一篇: 关于配置支持JFreeChart的Tomcat

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:J2EE项目危机【翻译】 -避免这10项J2EE危机来确保你的企业JAVA项

下一篇:JSP中文乱码问题的解决