hibernate缓存

本文深入解析缓存技术,包括一级缓存、二级缓存及查询缓存的原理与应用。重点阐述了缓存的使用场景、注意事项以及如何配置缓存算法,帮助开发者有效提升系统性能。
1.什么是缓存
一级缓存:session级别的缓存
二级缓存:sessionFactior缓存,保存所有session
   什么时候用?
1.存放经常被访问的对象
2.改动不大
3.数量不大
4.不会被并发访问,允许出现偶尔并发的数据
5.参考数据
   注意:
1.load   iterate   默认使用二级缓存
2.list默认向二级缓存内添加数据,但是查询的时候不使用二级缓存
查询缓存(三级缓存):即用方法查询缓存中的内容(比如,二级缓存中有三个用户,我要查询缓存中的第二个用户)
使用方法:
1.在hibernate.cfg.xml配置文件中添加(依赖于二级缓存,也就是说,下面的配置还是要的)
<property name="cache.use_query_cache">true</property> 
2.调用Query的setCachable(true)方法使用二级缓存
List<District> list = session.createQuery("from Users").setCacheable(true).list();


2.hibernate的配置(EhCache)
       1.hibernate.cfg.xml
打开二级缓存: <property name="hibernate.cache.use_second_level_cache">true</property> 
设置二级缓存的工具:       <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>  
       2.Entity.hbm.xml(需要二级缓存的类)
在实体对象的映射文件中(方案一)
            <cache usage="read-only"/>   
read-only 只读
transactional 事务缓存
read-write  读写
nonstrict-read-write 非严格读/写缓存
read-only 只写
  注意:
  1.必须写在<class>标签内部
  2.必须写在<id>标签前面
 在hibernate.cfg.xml配置文件中(方案二)
<class-cache class="com.bjsxt.hibernate.Classes" usage="read-only" />  
注意:必须写在<mapping>标签后面
 3.@Cache
3.eheache.xml配置
<ehcache>
    <!-- 缓存保存到硬盘上的位置,现在设置的是保存到系统默认的缓存路径中 -->
    <diskStore path="java.io.tmpdir"/>  


    <defaultCache <!-- 默认的缓存-->
        maxElementsInMemory="10000" <!-- 最多储存多少个对象-->
        eternal="false" <!-- 是否是不可更改的-->
        timeToIdleSeconds="120" <!-- 无人访问时缓存存在的时间-->
        timeToLiveSeconds="1200" <!-- 缓存存在的时间-->
        overflowToDisk="true" <!-- 是否放到硬盘上-->
        />
  
    <cache name="sampleCache1" <!-- name属性,方便使用时决定调用哪个缓存配置-->
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        overflowToDisk="true"
        />
 </ehcache>
4.缓存算法 
作用:如果缓存满了,指定替换的对象
LRU (Least  Recently   Used)  最近很少使用       即:那个对象被访问的时间离现在最远,谁被替换
LFU  (Least Frequently Used) 最近不常被使用     即:使用次数最少的被替换
FIFO  (First  In  First Out) 第一个进,第一个出      不解释
      使用方法:
      在eheache.xml 中添加配置: memoryStoreEvictionPolicy="LRU"
【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值