快捷搜索:  汽车  科技

hibernate怎么清理缓存数据(hibernate缓存的使用)

hibernate怎么清理缓存数据(hibernate缓存的使用)<!-- 启用二级缓存 --> <property name="cache.use_second_level_cache">true</property> <!-- 二级缓存指定第三方插件 --> <property name="hibernate.cache.provider_class"></property> <!-- 配置哪个类使用二级缓存 --> <class-cache class="com.zhanghe.study.model.User" usage="read-write"/> 哪个类使用二级缓存的配置也可以在.hbm.xml中配置<cache usage="read-write"/>

hibernate怎么清理缓存数据(hibernate缓存的使用)(1)

hibernate缓存

hibernate提供了两个级别的缓存

  • 一级缓存 session级别的缓存,属于事务范围的缓存,由hibernate来管理
  • 二级缓存 sessionFactory级别的缓存,属于进程范围内的缓存
二级缓存

二级缓存是属于sessionFactory的外置缓存,默认情况下hibernate是不会启用的,需要第三方的插件

hibernate允许使用的缓存插件

  • EHCache 可作为进程范围内的缓存,支持hibernate查询缓存
  • OpenSysphony OSCache 可作为进程范围内的缓存,支持hibernate查询缓存
  • SwarmCache 可作为集群范围内的缓存,不支持hibernate的查询缓存
  • JBossCache 可作为集群范围内的缓存,支持hibernate的查询缓存
二级缓存的使用

在hibernate.cfg.xml中配置启用二级缓存

<!-- 启用二级缓存 --> <property name="cache.use_second_level_cache">true</property> <!-- 二级缓存指定第三方插件 --> <property name="hibernate.cache.provider_class"></property> <!-- 配置哪个类使用二级缓存 --> <class-cache class="com.zhanghe.study.model.User" usage="read-write"/>

哪个类使用二级缓存的配置也可以在.hbm.xml中配置

<cache usage="read-write"/>

如果有关联关系的话,还需要再进行设置集合的二级缓存

<!-- collection表示的是全类名加上集合属性名 这时候只会缓存OID--> <collection-cache collection="com.zhanghe.study.model.many2one.Customer.orderList" usage="read-write"/> <!-- 在缓存该集合类的实际类型 --> <class-cache class="com.zhanghe.study.model.many2one.Order" usage="read-write"/>

上述配置对于查询缓存不生效,需要再加上以下配置,并且在查询时使用query.setCacheable(true),查询缓存依赖于二级缓存

<!-- 开启查询缓存 --> <property name="cache.use_query_cache">true</property>

猜您喜欢: