(31)java web的hibernate使用-一级缓存,二级缓存

参考:https://blog.csdn.net/miachen520/article/details/52195832

 

hibernate自带一级缓存 和 二级缓存

一,一级缓存:

  基于Session的缓存,缓存内容只在当前session有效,session关闭,缓存内容失效。作用范围小,持续时间短。

二,二级缓存:

  Hibernate提供了基于应用程序级别的缓存, 可以跨多个session,即不同的session都可以访问缓存数据。 这个缓存也叫二级缓存。

  Hibernate提供的二级缓存有默认的实现,且是一种可插配的缓存框架!如果用户想用二级缓存,只需要在hibernate.cfg.xml中配置即可;不想用,直接移除,不影响代码。

  Hibernate提供对其他缓存方案的支持,不想用hibernate的默认二级缓存,可以使用其他:

  

三,hibernate二级缓存配置

  1) 开启二级缓存

  2)指定缓存框架

  3)指定那些类加入二级缓存

  

		<!-- 1. 开启二级缓存 -->
		<property name="hibernate.cache.use_second_level_cache">true</property>
		<!-- 2. 指定使用哪一个缓存框架(默认提供的) -->
		<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
		<!-- 开启查询缓存 -->
		<property name="hibernate.cache.use_query_cache">true</property>

		<!-- 加载所有映射 -->
		<mapping resource="gy/hibernate/Account.hbm.xml" />


		<!-- 3. 指定哪一些类,需要加入二级缓存 -->
		<!-- 1:事务(Transaction)仅在受管理的环境中可用。它保证可重读的事务隔离级别,可以对读/写比例高,很少更新的数据采用该策略。 
			2:读写(read-write)使用时间戳机制维护读写提交事务隔离级别。可以对读/写比例高,很少更新的数据采用该策略。 
			3:非严格读写(notstrict-read-write)不保证Cache和数据库之间的数据库的一致性。使用此策略时,应该设置足够的缓存过期时间,否则可能从缓存中读出脏数据。当一些数据极少改变,并且当这些数据和数据库有一部份不量影响不大时,可以使用此策略。 
			4:只读(read-only)当确保数据永不改变时,可以使用此策略。 -->
		<class-cache usage="read-write" class="gy.hibernate.Account"></class-cache>

  集合缓存 :<collection-cache>

posted on 2018-08-15 08:44  洋子哥哥  阅读(478)  评论(0编辑  收藏  举报