一、1、Session级别缓存属于一级缓存,持久化对象保存在Session一级缓存中(一级缓存引用持久化对象地址),只要session不关闭,一级缓存就存在,缓存中对象也不会被回收;

Session会在一些特定时间点,将缓存中数据flush到数据库中( Transaction的commit()、应用程序执行一些查询操作、调用session的flush方法)。

2、SessionFactory级别缓存属于二级缓存

二、证明一级缓存存在:在获取Customer的Demo中,可以使用同一个Session获取两次Customer,如:

Customer c1=session.get(Customer.class,1);//这时c1是持久化状态,c1存储在session中(一级缓存);

System.out.println(c1.getName());

Customer c2=session.get(Customer.class,1);//可验证c2获取值时并未向数据库发送SQL语句,而且c1值和c2值相同

System.out.println(c2.getName());

三、hibernate快照

Hibernate快照可以让持久化对象具有自动更新能力。

如在执行customer查询操作时Customer c1=session.get(Customer.class,1);如果取到的c1对象Name为”tom“,然后c1.setName("fox");然后提交事务并关闭session。数据库查询customer数据,id为1的记录name值更改为fox。这是快照让对象有了自动更新能力。

Hibernate向一级缓存放入数据时,同事保存快照数据(数据备份),当修改一级缓存数据,在flush操作时,对比缓存和快照,如果不一致自动更新(将缓存数据同步到数据库,并更新快照)

四、一级缓存常见操作:

1、flush,用于刷新一级缓存,使快照区数据和缓存数据一致,在没有提交数据库执行前,数据库数据没有改变

2、clear,清空一级缓存中所有对象

3、evict,清空一级缓存中指定对象

4、refresh,使用数据库数据同步一级缓存与快照(重新查数据库,更新快照和一级缓存)

初学hibernate之缓存的更多相关文章

  1. hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存

    二级缓存(sessionFactory): Hibernate的二级缓存由SessionFactory对象管理,是应用级别的缓存.它可以缓存整个应用的持久化对象,所以又称为“SessionFactor ...

  2. Hibernate ——二级缓存

    一.Hibernate 二级缓存 1.Hibernate 二级缓存是 SessionFactory 级别的缓存. 2.二级缓存分为两类: (1)Hibernate内置二级缓存 (2)外置缓存,可配置的 ...

  3. hibernate一级缓存

    理解 Hibernate 一级缓存 Hibernate 一级缓存默认是打开,不需要任何的配置.实际上,你无法强制禁止它的使用. 如果你理解了一级缓存实际上和会话是关联的,就很容易理解一级缓存.总所周知 ...

  4. paip. 提升性能---hibernate的缓存使用 总结

    paip. 提升性能---hibernate的缓存使用 总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog ...

  5. 配置Hibernate二级缓存时,不能初始化RegionFactory的解决办法

    配置Hibernate 二级缓存时,出现以下bug提示: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder&quo ...

  6. Hibernate 所有缓存机制详解

    hibernate提供的一级缓存 hibernate是一个线程对应一个session,一个线程可以看成一个用户.也就是说session级缓存(一级缓存)只能给一个线程用,别的线程用不了,一级缓存就是和 ...

  7. [转] 关于hibernate的缓存使用

    http://blog.csdn.net/woshichenxu/article/details/586361 1.     关于hibernate缓存的问题: 1.1.1.         基本的缓 ...

  8. Hibernate的缓存技术详解

    转载注明出处:http://www.cnblogs.com/xiaoming0601/p/5882980.html 一.什么是缓存: 并不是指计算机的内存或者CPU的一二级缓存:缓存是指为了降低应用程 ...

  9. 记录Hibernate的缓存知识

    一.Hibernate缓存的作用 Hibernate是一个持久层框架,Hibernate要经常访问物理数据库.为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能,Hibernate的缓 ...

随机推荐

  1. 【WIN10】基本控件

    先發個下載地址: http://yunpan.cn/cHuCqYzvsWFAL  访问密码 3470 說明一下.這個示例只是最簡單的演示,並不能提供太大的實用價值. 後面會介紹 Bing & ...

  2. C# MD5加密解密帮助类

    /// <summary>    /// MD5加密解密帮助类    /// </summary>    public static class DESHelper    {  ...

  3. python 调用 shell 命令方法

    python调用shell命令方法 1.os.system(cmd) 缺点:不能获取返回值 2.os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等   ...

  4. CSS 实现加载动画之七-彩环旋转

    今天整理的这个动画估计大家都不会陌生,彩环旋转,看过之后是不是觉得很熟悉,对,这个就是优酷视频APP里面的加载动画.本人空余时间喜欢看些视频,留意到这个动画后就想用代码实现出来,今天整理了下,跟大家分 ...

  5. 如何使用Native Messaging API 打开window程序

    问 如何使用Native Messaging API 打开window程序 cmd javascript terminal chrome Tychio 2013年03月26日提问 关注 1 关注 收藏 ...

  6. ibatis 到 MyBatis区别(zz)

    简介: 本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区别,以及从 iBatis 向 MyBatis 移植时需要注意的地方.通过对本文的学习,读者基本能够了解 MyBatis ...

  7. [CareerCup] 10.3 Integer not Contain in the File 文件中不包含的数

    10.3 Given an input file with four billion non-negative integers, provide an algorithm to generate a ...

  8. iOS中归档对象的创建,数据写入与读取

    归档(archiving)是指另一种形式的序列化,但它是任何对象都可以实现的更常规的模型.专门编写用于保存数据的任何模型对象都应该支持归档.比属性列表多了很良好的伸缩性,因为无论添加多少对象,将这些对 ...

  9. Openwrt Uboot烧写

    Openwrt 烧uboot 需要慎重,一般买一个带不死uboot的路由器再折腾会比较安全,因为 openwrt firmware对uboot分区进行了保护,而且带有不死uboot的路由器可以通过we ...

  10. 多个相同name的文本输入框,输入其中一个后,使剩下的不能输入值

    可以用blur或keyup事件响应: 实现一: <body> <input type="text" id="AfterOtOt1" name= ...