1、session有缓存功能,但是当session关闭后,缓存消失。
2.二级缓存是sessionfactory级别的,当hibernate容器启动后,
二级缓存就存在了,当hibernate关闭后,二级缓存消失。
hibernate本身对于二级缓存是关闭的,而且没有实现二级缓存的机制。
在hibernate.cfg.xml文件中配置:
<!-- 启用二级缓存 --><property name="hibernate.cache.use_second_level_cache">true</property><property name="hibernate.cache.use_query_cache">true</property><!-- 配置缓存提供商 --><property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
在实体类中配置
<class-cache class="com.nacosoft.pda.user.PdaUser" usage="read-write" />
如果想开启集合的二级缓存,需要开启针对集合类的二级缓存。
如果二级缓存的数据量大,可以在src目录下新建ehcache.xml文件,把数据缓存在磁盘上。
3.查询缓存:在二级缓存的基础上,在代码里写:
Query query = session.createQuery("from Person");
query.setCacheable(true);
List list = query.list();
就可以使用查询缓存了