Hibernate 缓存

阅读:421 2019-03-19 14:41:51 来源:新网

一级缓存是session级别的缓存,hiberante来管理的,这个一般不用管,

二级缓存是sessionfactory级别的,可以进行配置和更改,加载卸载

一级缓存的管理

当应用程序调用session的save()、update()、savaeorupdate()、get()或load(),以及调用查询接口的list()、iterate()方法时,如果在session缓存中还不存在相应的对象,hibernate就会把该对象加入到第一级缓存中。当清理缓存时,hibernate会根据缓存中对象的状态变化来同步更新数据库。

session为应用程序提供了两个管理缓存的方法:

evict(objectobj):从缓存中清除参数指定的持久化对象。

clear():清空缓存中所有持久化对象。

二级缓存的管理

hibernate的二级缓存策略的一般过程如下:

1)条件查询的时候,总是发出一条select*fromtable_namewhere….(选择所有字段)这样的sql语句查询数据库,一次获得所有的数据对象。

2)把获得的所有数据对象根据id放入到第二级缓存中。

3)当hibernate根据id访问数据对象的时候,首先从session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照id放入到缓存。

4)删除、更新、增加数据的时候,同时更新缓存。

什么样的数据适合存放到第二级缓存中?

1很少被修改的数据

2不是很重要的数据,允许出现偶尔并发的数据

3不会被并发访问的数据

4参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。

不适合存放到第二级缓存的数据?

1经常被修改的数据

2财务数据,绝对不允许出现并发

3与其他应用共享的数据。

使用ehcache配置二级缓存

步骤:

1)把ehcache-1.2.3.jar加入到当前应用的classpath中。

2)在hibernate.cfg.xml文件中加入ehcache缓存插件的提供类。

true

org.hibernate.cache.ehcacheprovider

3)拷贝ehcache.xml文件到类路径(项目工程的src目录下),这个文件在hibernate安装目录的etc下

在需要缓存的实体bean配置文件中加入缓存配置项

"-//hibernate/hibernatemappingdtd3.0//en"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

not-null="true"type="string"/>

class="com.tfsoftware.hibernate.model.employee"/>

说明:usage说明了缓存的策略,region指定缓存的区域名

ehcache默认的配置文件ehcache.xml(放在类路径下)

timetoidleseconds="120"

timetoliveseconds="180"

diskpersistent="false"

diskexpirythreadintervalseconds="60"/>

maxelementsinmemory="100"

eternal="false"

overflowtodisk="true"

timetoidleseconds="300"

timetoliveseconds="600"

diskpersistent="false"/>

ehcache默认的配置文件ehcache.xml

说明:

defaultcache节点为缺省的缓存策略

maxelementsinmemory内存中最大允许存在的对象数量

eternal设置缓存中的对象是否永远不过期

overflowtodisk把溢出的对象存放到硬盘上

timetoidleseconds指定缓存对象空闲多长时间就过期,过期的对象会被清除掉

timetoliveseconds指定缓存对象总的存活时间

diskpersistent当jvm结束是否持久化对象

diskexpirythreadintervalseconds指定专门用于清除过期对象的监听线程的轮询时间

二级缓存:

下一篇: 前端面试题
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服