Hibernate缓存配置

应用程序->Hibernate缓存->永久性数据存储源

Hibernate缓存介于Hibernate应用和数据库之间,缓存中存放了数据库数据的拷贝。其作用是减少访问数据库的频率,从而提高应用的运行性能。

Hibernate提供了两级缓存:

一级缓存:Session级别的缓存

二级缓存:SessionFactory级别的全局缓存

二级缓存的配置:启用二级缓存:在Hibernate的配置文件中配置属性

hibernate.cache.use_second_level_cache=true

在映射文件中设置二级缓存×××.hbm.xml:

类或者集合映射的“<cache>元素”的详细用法:

<hibernate-mapping>

<classname="com.Dept"table=“T_DEPT">

<cache

usage="transactional|read-write|nonstrict-read-write|read-only"

region="RegionName"

include="all|non-lazy"/>

<setname=“users”lazy=“true”>

<cacheusage=“nonstrict-read-write”/>

……

</set>

</class>

</hibernate-mapping>

usage:(必须)说明了缓存的同步策略:transactional、read-write、nonstrict-read-write或read-only。

region:(可选,默认为类或者集合的名字)指定二级缓存的区域名

include:(可选,默认为all)如果取值为non-lazy,表示当缓存一个对象时,不会缓存它的映射为延迟加载的属性。

注意:

1、<cache>元素必须紧跟<class>元素

2、Hibernate只会缓存对象的简单属性的值,如果要缓存集合属性,必须在集合元素中也加入<cache>子元素,而Hibernate仅仅是把与当前持久对象关联的对象的ID存放到缓存中。如果希望把整个关联的对象的所有数据都存入缓存,则要在相应关联的对象的映射文件中配置<cache>元素。

选择合适的缓存插件:在配置文件指定CacheProvider

<propertyname=”hibernate.cache.provider_class”>org.hibernate.cache.EhCacheProvider</property>

相关推荐