码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate缓存总结

时间:2017-03-31 00:21:33      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:.class   替代   alt   快照   sys   优先   自动   ima   name   

概述: 用于提高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缓存总结

标签:.class   替代   alt   快照   sys   优先   自动   ima   name   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!