[b]应用程序 -> Hibernate缓存 ->永久性数据存储源[/b]
Hibernate缓存介于Hibernate应用和数据库之间,缓存中存放了数据库数据的拷贝。 其作用是减少访问数据库的频率,从而提高应用的运行性能。
Hibernate提供了两级缓存:
一级缓存: Session级别的缓存
二级缓存: SessionFactory级别的全局缓存
[b]二级缓存的配置:[/b]启用二级缓存:在Hibernate的配置文件中配置属性
hibernate.cache.use_second_level_cache = true
在映射文件中设置二级缓存×××.hbm.xml :
类或者集合映射的“<cache>元素”的详细用法:
<hibernate-mapping>
<class name="com.Dept" table=“T_DEPT" >
[color=red]<cache
usage="transactional|read-write|nonstrict-read-write|read-only"
region="RegionName"
include="all|non-lazy" />[/color]
<set name=“users” lazy=“true”>
<cache usage=“ 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
<property name=”hibernate.cache.provider_class”> org.hibernate.cache.EhCacheProvider </property>
Hibernate缓存介于Hibernate应用和数据库之间,缓存中存放了数据库数据的拷贝。 其作用是减少访问数据库的频率,从而提高应用的运行性能。
Hibernate提供了两级缓存:
一级缓存: Session级别的缓存
二级缓存: SessionFactory级别的全局缓存
[b]二级缓存的配置:[/b]启用二级缓存:在Hibernate的配置文件中配置属性
hibernate.cache.use_second_level_cache = true
在映射文件中设置二级缓存×××.hbm.xml :
类或者集合映射的“<cache>元素”的详细用法:
<hibernate-mapping>
<class name="com.Dept" table=“T_DEPT" >
[color=red]<cache
usage="transactional|read-write|nonstrict-read-write|read-only"
region="RegionName"
include="all|non-lazy" />[/color]
<set name=“users” lazy=“true”>
<cache usage=“ 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
<property name=”hibernate.cache.provider_class”> org.hibernate.cache.EhCacheProvider </property>