Spring 整合 Hibernate 时启用二级缓存实例详解
发布时间 - 2026-01-10 23:04:33 点击率:次Spring 整合 Hibernate 时启用二级缓存实例详解

写在前面:
1. 本例使用 Hibernate3 + Spring3;
2. 本例的查询使用了 HibernateTemplate;
1. 导入 ehcache-x.x.x.jar 包;
2. 在 applicationContext.xml 文件中找到 sessionFactory 相应的配置信息并在设置 hibernateProperties 中添加如下代码:
<!-- 配置使用查询缓存 --> <prop key="hibernate.cache.use_query_cache">true</prop> <!-- 配置启用二级缓存 --> <prop key="hibernate.cache.use_second_level_cache">true</prop> <!-- 配置二级缓存的提供商 --> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
3. 由于查询使用了 hibernateTemplate,所以还要在 hibernateTemplate 中做相应配置,找到 hibernateTemplate 的配置项,添加如下代码:
<!-- 使用查询缓存 --> <property name="cacheQueries"> <value>true</value> </property>
4. 在要缓存的实体类中加入如*解:
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
注:
usage 可以有以下几个取值:
- CacheConcurrencyStrategy.NONE:不使用缓存,默认;
- CacheConcurrencyStrategy.READ_ONLY:只读模式,若对缓存的数据进行修改操作会抛出异常;
- CacheConcurrencyStrategy.NONSTRICT_READ_WRITE:不严格的读写模式,不会对缓存的数据加锁;
- CacheConcurrencyStrategy.READ_WRITE:读写模式,在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询;
- CacheConcurrencyStrategy.TRANSACTIONAL:事务模式,支持事务,当事务发生回滚时,缓存中的数据也回滚,只支持 JPA 。
5. 配置 ehcache.xml 文件:
<ehcache>
<!-- 指定一个文件目录,当EHCache把数据写到硬盘上时,将把数据写到这个目录下 -->
<diskStore path="java.io.tmpdir"/>
<!--
name 设置缓存的名字,他的取值为类的完整名字或者类的集合的名字;
maxElementsInMemory 设置基于内存的缓存可存放的对象的最大数目
eternal 如果为true,表示对象永远不会过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds,默认为false;
timeToIdleSeconds 设定允许对象处于空闲状态的最长时间,以秒为单位;
timeToLiveSeconds 设定对象允许存在于缓存中的最长时间,以秒为单位;
overflowToDisk 如果为true,表示当基于内存的缓存中的对象数目达到maxElementsInMemory界限,会把溢出的对象写到基于硬盘的缓存中;
-->
<!-- 设置缓存的默认数据过期策略 -->
<defaultCache
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="1200"
timeToLiveSeconds="1200"
overflowToDisk="false"
/>
<!-- 设定具体的第二级缓存的数据过期策略 -->
<cache name="com.shawearn.model.User"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="3000"
timeToLiveSeconds="3000"
overflowToDisk="false" />
</ehcache>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Spring
# 整合
# Hibernate
# 时启用二级缓存实例详解
# 启用二级缓存
# SSH整合中 hibernate托管给Spring得到SessionFactory
# 详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)
# SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2
# Spring4整合Hibernate5详细步骤
# spring+hibernate 两种整合方式配置文件的方法
# Java框架篇:Spring+SpringMVC+hibernate整合开发
# Spring+Hibernate+Struts(SSH)框架整合实战
# Spring与Hibernate整合事务管理的理解
# Spring MVC+FastJson+hibernate-validator整合的完整实例教程
# struts+spring+hibernate三个框架的整合
# Spring和Hibernate的整合操作示例
# 写到
# 会把
# 本例
# 几个
# 使用了
# 并在
# 要在
# 希望能
# 会对
# 就去
# 谢谢大家
# 永远不会
# 抛出
# 上时
# 值为
# 将把
# 加锁
# 中做
# 类中
# 默认为
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
WEB开发之注册页面验证码倒计时代码的实现
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
如何用PHP工具快速搭建高效网站?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel怎么实现验证码(Captcha)功能
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
node.js报错:Cannot find module 'ejs'的解决办法
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Laravel怎么实现模型属性的自动加密
高端建站如何打造兼具美学与转化的品牌官网?
JS弹性运动实现方法分析
Laravel如何实现用户注册和登录?(Auth脚手架指南)
javascript中的try catch异常捕获机制用法分析
新三国志曹操传主线渭水交兵攻略
Laravel如何使用Collections进行数据处理?(实用方法示例)
如何彻底卸载建站之星软件?
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
深圳网站制作平台,深圳市做网站好的公司有哪些?
如何在阿里云服务器自主搭建网站?
如何在IIS7上新建站点并设置安全权限?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
电商网站制作价格怎么算,网上拍卖流程以及规则?
HTML 中动态设置元素 name 属性的正确语法详解
长沙做网站要多少钱,长沙国安网络怎么样?
*服务器网站为何频现安全漏洞?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何在云主机快速搭建网站站点?
七夕网站制作视频,七夕大促活动怎么报名?
,怎么在广州志愿者网站注册?
C#如何调用原生C++ COM对象详解
Laravel如何使用Gate和Policy进行授权?(权限控制)
如何在宝塔面板创建新站点?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
jQuery validate插件功能与用法详解
EditPlus中的正则表达式 实战(2)
如何用花生壳三步快速搭建专属网站?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
JS中对数组元素进行增删改移的方法总结
微信小程序 canvas开发实例及注意事项
如何挑选最适合建站的高性能VPS主机?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
黑客入侵网站服务器的常见手法有哪些?
网站建设要注意的标准 促进网站用户好感度!
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
javascript中对象的定义、使用以及对象和原型链操作小结
javascript如何操作浏览器历史记录_怎样实现无刷新导航
浅谈Javascript中的Label语句
下一篇: 滨州网页,山东电工证查询官网?
下一篇: 滨州网页,山东电工证查询官网?

