首页 > Web开发 > 详细

Hibernate缓存总结

时间:2017-03-31 00:21:33      阅读:191      评论:0      收藏:0      [点我收藏+]
概述: 用于提高hibernate执行效率。,分为两个,一级缓存和二级缓存,一级缓存,是hibernate 自带的,不可以删除.二级缓存,需要配置,一般不用hibernate提供的,而是 使用redies替代。
1. 一级缓存分为两个区,缓存区和快照区
技术分享
2.  执行流程
      2.1 以获取对象为例
         当用户执行session.get(user.class,1L);方法的时候 会先判断缓存区中有没有这个对象,如果有的话就优先从缓存区获取,并返回。如果缓存区没有这个对象的话就从数据库中获取这个对象,并将这个对象,放置到缓存区。此时的对象,就是持久太对象。(持久态对象有两个标志:1.有OID就是有主键。2.第二个被session 管理,也就是放置到一级缓存中)当执行事务提交方法的时候, 会自动判断缓存区和快照区是否一致,如果不一致就以缓存区为标准同步。在对数据库进行更新,此时因为是获取对象,所有不会有更新或者添加操作。当执行完毕后,就会提交事务。
2.2 保存对象方法。
     Session.save(sysUser);  会先将数据添加到数据库,并同时将对象添加到缓存区中。此时的对象,就是持久太对象。(持久态对象有两个标志:1.有OID就是有主键。2.第二个被session 管理,也就是放置到一级缓存中。事务提交时更新。和获取对象同理。
2.3.当持久态对象被修改。
当执行这个方法(User user=   Session.get(user.classs,1l);)的时候,会获取持久态对象,此时这个对象也在一级缓存中的缓存区和快照区内。在执行这个方法:(user.setName(“张三”);)的时候,会将对象更改,同时也会更改一级缓存中的缓存区,当执行事务提交方法的时候,当执行事务提交方法的时候, 会自动判断缓存区和快照区是否一致,如果不一致就以缓存区为标准同步。在对数据库进行更新。此时数据更新完毕 ,缓存区和快照区的数据也是一致的。事务也会提交。

Hibernate缓存总结

原文:http://www.cnblogs.com/canghaihongxin/p/6649215.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!