hibernate高级特性_1

原创 2005年05月20日 08:52:00

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脱离,但是我们可以通过它来寻找数据库中相应的记录

Hibernate学习笔记之高级特性

Hibernate锁、分页、缓存、事务

Hibernate高级特性

Hibernate高级特性描述如下: 1.Hibernate持久化实现,细节包括:实体对象的生命周期,实体对象识别,数据缓存,事务管理以及持久层操作 2.Hibernate回调与拦截机制,细节包括:L...
  • mawming
  • mawming
  • 2015年04月01日 16:46
  • 413

Hibernate3高级特性-使用过滤器

转  http://www.cnblogs.com/yql1986/archive/2011/10/14/2210568.html   Hibernate3 新增了对某个类或集合使用预定...

Hibernate中的高级特性

Hibernate的核心配置文件在src下创建一个hibernate.cfg.xml

Hibernate一些高级特性

Hibernate对象的三种状态 1.临时状态transient     临时状态下对象和数据库没有任何联系,不被session所关联。在临时状态下,若没有将对象引用,对象将被GC回收。临时对象可...

自学Java系列 笔记2 高级类特性1

关键字static(静态的) 在Java类中声明变量、方法和内部类时,可使用关键字static做为修饰符。 static标记的变量或方法由整个类(所有实例)共享,如访问控制权限允许,可不必创建该类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate高级特性_1
举报原因:
原因补充:

(最多只允许输入30个字)