Mybatis:
1、开启二级缓存,在userMapper.xml文件中添加如下配置
<mapper namespace="me.gacl.mapping.userMapper"> <!-- 开启二级缓存 --> <cache/>
二级缓存补充说明
1. 映射语句文件中的所有select语句将会被缓存。
2. 映射语句文件中的所有insert,update和delete语句会刷新缓存。
3. 缓存会使用Least Recently Used(LRU,最近最少使用的)算法来收回。
4. 缓存会根据指定的时间间隔来刷新。
5. 缓存会存储1024个对象
cache标签常用属性:
<cache eviction="FIFO" <!--回收策略为先进先出--> flushInterval="60000" <!--自动刷新时间60s--> size="512" <!--最多缓存512个引用对象--> readOnly="true"/> <!--只读-->
如何在程序里使用二级缓存:
首先在hibernate.cfg.xml开启二级缓存
- <hibernate-configuration>
- <session-factory>
- ......
- <!-- 开启二级缓存 -->
- <property name="hibernate.cache.use_second_level_cache">true</property>
- <!-- 启动"查询缓存"如果想缓存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集,必须配置此项-->
- <property name="hibernate.cache.use_query_cache">true</property>
- <!-- 设置二级缓存插件EHCache的Provider类-->
- <!-- <property name="hibernate.cache.provider_class">
- org.hibernate.cache.EhCacheProvider
- </property> -->
- <!-- 二级缓存区域名的前缀 -->
- <!--<property name="hibernate.cache.region_prefix">test</property>-->
- <!-- 高速缓存提供程序 -->
- <property name="hibernate.cache.region.factory_class">
- net.sf.ehcache.hibernate.EhCacheRegionFactory
- </property>
- <!-- Hibernate4以后都封装到org.hibernate.cache.ehcache.EhCacheRegionFactory -->
- <!-- 指定缓存配置文件位置 -->
- <!-- <property name="hibernate.cache.provider_configuration_file_resource_path">
- ehcache.xml
- </property> -->
- <!-- 强制Hibernate以更人性化的格式将数据存入二级缓存 -->
- <property name="hibernate.cache.use_structured_entries">true</property>
- <!-- Hibernate将收集有助于性能调节的统计数据 -->
- <property name="hibernate.generate_statistics">true</property>
- ......
- </session-factory>
- </hibernate-configuration>
- <?xml version="1.0" encoding='UTF-8'?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
- <hibernate-mapping>
- <class>
- <!-- 设置该持久化类的二级缓存并发访问策略 read-only read-write nonstrict-read-write transactional-->
- <class name="cn.java.test.model.User" table="TBL_USER">
- <cache usage="read-write"/>
- ......
- </class>
- </hibernate-mapping>
- <hibernate-mapping>
- <class name="cn.java.test.model.UserModel" table="TBL_USER">
- <cache usage="read-write" />
- <set name="farms" cascade="all" inverse="true" lazy="false">
- <cache usage="read-write"/>
- <key column="fk_user_id"/>
- <one-to-many class="cn.java.test.model.FarmModel"/>
- </set>
- </class>
- </hibernate-mapping>