问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何配置hibernate二级缓存

发布网友 发布时间:2022-04-13 20:35

我来回答

1个回答

热心网友 时间:2022-04-13 22:05

答案转载自:http://blog.csdn.net/runming56/article/details/8574047

如何在程序里使用二级缓存:
首先在hibernate.cfg.xml开启二级缓存

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>

然后是ehcache配置(ehcache.xml)
cache参数详解:
● name:指定区域名
● maxElementsInMemory :缓存在内存中的最大数目
● maxElementsOnDisk:缓存在磁盘上的最大数目
● eternal :设置是否永远不过期
● overflowToDisk : 硬盘溢出数目
● timeToIdleSeconds :对象处于空闲状态的最多秒数后销毁
● timeToLiveSeconds :对象处于缓存状态的最多秒数后销毁
● memoryStoreEvictionPolicy:缓存算法,有LRU(默认)、LFU、LFU

关于缓存算法,常见有三种:
● LRU:(Least Rencently Used)新来的对象替换掉使用时间算最近很少使用的对象
● LFU:(Least Frequently Used)替换掉按命中率高低算比较低的对象
● LFU:(First In First Out)把最早进入二级缓存的对象替换掉

Xml代码

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<!--如果缓存中的对象存储超过指定的缓存数量的对象存储的磁盘地址-->
<diskStore path="D:/ehcache"/>

<!-- 默认cache:如果没有对应的特定区域的缓存,就使用默认缓存 -->
<defaultCache maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="false"/>
<!-- 指定区域cache:通过name指定,name对应到Hibernate中的区域名即可-->
<cache name="cn.javass.h3test.model.UserModel"
eternal="false"
maxElementsInMemory="100"
timeToIdleSeconds="1200"
timeToLiveSeconds="1200"
overflowToDisk="false">
</cache>

</ehcache>

在每个实体的hbm文件中配置cache元素,usage可以是read-only或者是read-write等4种。

Xml代码

<?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注解配置缓存实体类

Java代码

@Entity
@Table
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable {
private static final long serialVersionUID = -5121812640999313420L;
private Integer id;
private String name;

......
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
四万元没开发票税务局发多少钱 不给开发票这个情节要罚多少钱? 广东乌龙茶的种类 银行什么时候拉征信 600795国电电力,为什么在2010年4,5月突然从8块跌到4块呢?涨幅-50%... 学习很差怎么逆袭 高考文科差生五十天冲刺计划!!! ...漂亮女人,那些不大漂亮的还很善良有点丑的怎么办?她们不是很可怜吗... CS1.6 AWP经典的FRAG视频 求链接 ...大家谁有AWP的视频或者DEMO,要个看看,学学,谢谢!~ 怎么查询iphone5s激活时间 保修期 查询苹果5S保修期和生产日期和激活时间 iphone5s怎么查询激活时间与保修期 如何查询苹果5S的激活、保修日期? 苹果5S怎么查询生产日期、激活日期和保修期?我的序列号是C39LCKHMFNJM,型号是ME 344LL&#47;A iphone5s保修期多久 iphone5s保修日期查询 C39MKWJ1FRC4苹果5s生产日期、激活日期、保修期、谢谢! 苹果5S怎么查保修期? 加湿可以熔喷布提高静电驻极的效率吗? 一次信用卡忘及时还款影响信用吗 联通手机号用什么软件可以设置彩铃 中国联通炫铃软件有哪些? 联通手机号用什么软件可以设置彩铃? 孕妇刚分娩完吃什么好 刚从产房出来的产妇可以吃什么 孕妇刚分娩后吃什么好 iPhone7plus的静音键能防水吗? iphone7plus 外壳摔了一个小瘪还防水吗? 苹果7手机防水吗? 要关闭语音播放,要找到手机助手,我手机里没有手机助手怎办? 搜狗浏览器的文件必须要放在C盘里面么 搜狗高速浏览器 下载的文件在哪里 不小心把搜狗浏览器卸载了,如何恢复收藏的文件? www.138ak.com有病毒吗? 谁知道www.138ak.com现在怎么看 找1.5CS AK的视频!!! 跪求AK文打包 AU文 AK文 谁给我点啊~ WOW海山AK 一共有4个技能都哪个? sap中仓库管理,哪个是入库?如何入库? 求高达SEED AK长篇同人 找个2年前百度贴吧AK文合集 SAP如何创建产品入库单? 求经典AK文 SAP系统怎么查询生产订单入库数量 AK??? SAP月结完成后,如何通过标准功能查询到本期物料的出入库实际价格? 生产完工未入库SAP查寻流程? SAP怎么查询一个月物料领出明细?