最近学习了一下hibernate(hibernate三种状态的讲解),看到网上有一篇写得还挺不错,就转载下来,自己写的不一定比人家总结得好,还结合了孔浩老师上课的案例代码,下面是详细内容: 下面是转自:http://www./asktalk/archive/2006/01/18/28548.html的一篇文章 在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的。对于理解hibernate,JVM和sql的关系有更好的理解。对于需要持久化的JAVA对象,在它的生命周期中有三种状态,而且互相转化。 1, 临时状态(Transient):用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象; 2, 持久化状态(Persistent):已经持久化,加入到了Session缓存中。如通过hibernate语句保存的对象。处于此状态的对象叫持久对象; 3, 游离状态(Detached):持久化对象脱离了Session的对象。如Session缓存被清空的对象。
状态转换图,结束官方的和转载作者的
两者都不会被Session关联,对象属性和数据库可能不一致; 游离对象有持久化对象关闭Session而转化而来,在内存中还有对象所以此时就变成游离状态了; 在操作了hibernate的方法如save()等后,并没有直接生成sql语句,去操作数据库,而是把这些更新存入Session中,只有Session缓存要被更新时,底层的sql语句才能执行,数据存入数据库; 下面是孔浩老师讲课的代码: |
|