hibernate持久化原理

以下内容仅作为我个人的学习参考进行记录,无意冒犯,如有不当之处,还请指正!

hibernate的持久化机制是采用session容器的方式来缓存数据,当进行save或者update对象时,Hibernate并未将这个对象实际的写入数据库中,而仅仅是在session缓存中根据应用的行为做了登记,在真正需要将缓存中的数据flush入数据库时才执行先前登记的所有行为。
这里执行就包括hibernate提出的二个概念VO,PO
VO(Value Object)是独立的Java Object。
PO(Persistence Object)是由Hibernate纳入其实体容器(EntityMap)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。如果一个PO与Session对应的实体容器中分离(如Session 关闭后的PO),那么此时,它又会变成一个VO。

Hibernate到底是怎样运作的。
需要将所有缓存flush入数据库,Session启动一个事务,并按照insert,update,……,delete的顺序提交所有之前登记的操作(注意:所有insert执行完毕后才会执行update)

Hibernate的flush处理机制,我们在一些复杂的对象更新和保存的过程中就要考虑数据库操作顺序的改变以及延时flush是否对程序的结果有影响。如果确实存在着影响,那就可以在需要保持这种操作顺序的位置加入flush强制Hibernate将缓存中记录的操作flush入数据库,这样看起来也许不太美观,但很有效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • Hibernate: 一个持久化框架 一个ORM框架 加载:根据特定的OID,把一个对象从数据库加载到内存中OID...
    JHMichael阅读 6,060评论 0 27
  • 本文包括:1、Hibernate的持久化类2、Hibernate 持久化对象的三个状态(难点)3、Hibernat...
    廖少少阅读 5,345评论 0 13
  • Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库...
    兰缘小妖阅读 4,933评论 1 18
  • 花开花谢,潮涨潮落,世人的眼光随花飘飞,随波飞扬,生命的光辉因此也被折射得神奇而又悲壮。 人初生的无知,少年的纯真...
    茶纷阅读 1,911评论 0 0
  • 10月3日星期二中雨 今天起床的很晚,起床来很不自觉的吃零食,我看见了很生气说了他就和没说一样。怎么办呢?还...
    梁朋怀阅读 903评论 0 0