博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate缓存
阅读量:6480 次
发布时间:2019-06-23

本文共 1223 字,大约阅读时间需要 4 分钟。

hot3.png

Hibernate缓存的作用:

Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据
Hibernate缓存分类:
Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存
Hibernate一级缓存又称为“Session的缓存”,它是内置的,不能被卸载(不能被卸载的意思就是这种缓存不具有可选性,必须有的功能,不可以取消session缓存)。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
Hibernate二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情况下,SessionFactory不会启用这个插件。
什么样的数据适合存放到第二级缓存中?   
1 很少被修改的数据   
2 不是很重要的数据,允许出现偶尔并发的数据   
3 不会被并发访问的数据   
4 常量数据   
不适合存放到第二级缓存的数据?   
1经常被修改的数据   
2 .绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发   
3 与其他应用共享的数据。
Hibernate查找对象如何应用缓存?
当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到,再查询数据库,把结果按照ID放入到缓存
删除、更新、增加数据的时候,同时更新缓存
Hibernate管理缓存实例
无论何时,我们在管理Hibernate缓存(Managing the caches)时,当你给save()、update()或saveOrUpdate()方法传递一个对象时,或使用load()、 get()、list()、iterate() 或scroll()方法获得一个对象时, 该对象都将被加入到Session的内部缓存中。
当随后flush()方法被调用时,对象的状态会和数据库取得同步。 如果你不希望此同步操作发生,或者你正处理大量对象、需要对有效管理内存时,你可以调用evict() 方法,从一级缓存中去掉这些对象及其集合。

转载于:https://my.oschina.net/u/1455908/blog/214962

你可能感兴趣的文章
Linux系统信息查看命令大全
查看>>
为什么项目的jar包会和tomcat的jar包冲突?
查看>>
这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
查看>>
linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义【转】
查看>>
程序员接私活记(转)
查看>>
eclipse如何修改dynamic web module version
查看>>
Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
查看>>
自己定义ImageView,实现点击之后算出点击的是身体的哪个部位
查看>>
颜色模式中8位,16位,24位,32位色彩是什么意思?会有什么区别?计算机颜色格式( 8位 16位 24位 32位色)【转】...
查看>>
js 类属性的命名 尽量避免关键字
查看>>
【新产品发布】迷你 STLINK / V2,可支持ST公司全系列的 STM8 / STM32
查看>>
strcpy()、memcpy()、memmove()、memset()的内部实现
查看>>
Project Euler 001-006 解法总结
查看>>
在Java程序中做字符串拼接时一定要记得的MessageFormat.format
查看>>
整型数组处理算法(二)文件中有一组整数,要求排序后输出到另一个文件中...
查看>>
【液晶模块系列基础视频】2.虚拟U盘
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]5.1.14
查看>>
新浪微博客户端(7)-通过转换坐标系来调整首页下拉菜单的位置
查看>>
trigger和triggerhandler的区别
查看>>
C/C++ 错误笔记-如果要释放内存,必须拿到内存的首地址进行释放
查看>>