Hibernate中的缓存机制
1. 一级缓存
自带无需任何设置,Session级别的缓存,只能在同一个Session对象中使用。在调用evict(Object)和clear()时会清除一级缓存。
测试:
@Test
public void oneCache() {
News news = session.get(News.class, 3);
News news4 = session.get(News.class, 4);
System.out.println("第一次查询:"+news+"--"+news4);
//session.clear();
//清除所有的 session
session.evict(news4);
//只清除当前 session
News news1 = session.get(News.class, 3);
News news14 = session.get(News.class, 4);
System.out.println("第二次查询:"+news1+"--"+news14);
}
2. 二级缓存
* 由同一个SessionFactory创建的不同的Session之间共享的缓存,称为二级缓存。
1. 设置二级缓存的类型
* 引入二级缓存依赖的包
lib\optional\ehcache 下所有的 jar 包
ehcache-2.10.1.jar
hibernate-ehcache-5.1.6.Final.jar
slf4j-api-1.7.7.jar
* 在全局配置文件中设置二级缓存的类型
<!-- 设置二级缓存 -->
<property name="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory
</property>
2. 在映射文件中设置缓存的只读性
<cache usage="read-only"/>
3. 测试:
@Test
public void Cache() {
News news = session.get(News.class, 3);
System.out.println("第一次查询:"+news);
session.close();
News news1 = session1.get(News.class, 3);
System.out.println("第二次查询:"+news1);
session1.close();
}
Hibernate中的缓存机制
最新推荐文章于 2023-05-08 11:56:46 发布