Hibernate的缓存机制.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hibernate的缓存机制

Hibernate的缓存机制 1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事务级缓存 2. 二级缓存: a 应用及缓存 b 分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c 第三方缓存的实现 Hibernate缓存概述 缓存是介于物理数据源与应用程序之间,是数据库数据在内存中的存放临时copy的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据 我们把这称“缓存命中 ,则就直接把命中的数据作为结果加以利用,避免了建立数据库查询的性能损耗。Hibernate缓存分类 一级缓存 session :内部缓存 事务范围:缓存只能被当前事务访问。缓存的生命周期依赖于事务的生命周期,当事务结束时,缓存也就结束生命周期。 二级缓存 sessionFactory :缓存被应用范围内的所有事务共享?这些事务有可能是并发访问缓存,因此必须对缓存进行更新。缓存的生命周期依赖于应用的生命周期,应用结束时,?缓存也就结束了生命周期,二级缓存存在于应用范围。集群范围:在集群环境中,缓存被一个机器或者多个机器的进程共享。缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致性,?缓存中的数据通常采用对象的松散数据形式,二级缓存也存在与应用范围。注意:对大多数应用来说,应该慎重地考虑是否需要使用集群范围的缓存,再加上集群范围还有数据同步的问题,所以应当慎用。多种范围的缓存处理过程持久化层可以提供多种范围的缓存。如果在事务范围的缓存中没有查到相应的数据,还可以到应用范围或集群范围的缓存内查询,如果还是没有查到,那么只有到数据库中查询了。 缓存应用的范围:修改少,数量在可以接受的范围内 使用二级缓存的原则: ◆数据不会被第三方修改 ◆同一数据系统经常引用 ◆数据大小在可接受范围之内 ◆关键数据或不会被并发更新的数据 hibernate引入第三方的缓存组件EHCACHE,下面是具体的实现步骤: 修改hibernate.cfg.xml配置引入ehCache缓存 hibernate-configuration session-factory property?name vider_class net.sf.ehcache.hibernate.EhCacheProvider / property property?name hibernate.cache.use_query_cache true / property / session-factory / hibernate-configuration ? 在src根目录下加入ehcache.xml文件,具体内容如下: ehcache?xmlns:xsi /2001/XMLSchema-instance?xsi:noNamespaceSchemaLocation ehcache.xsd defaultCache maxElementsInMemory 10000 eternal false timeToIdleSeconds 120 timeToLiveSeconds 120 overflowToDisk true / / ehcache ? 在映射文件中指定缓存同步策略 class?name com.tenly.bean.Student cache?usage read-write set?name classroom cache?usage read-only / set / class ? usage属性说明: ◆read-only:只读。对于不会发生改变的数据,可使用只读型缓存。 ◆nonstrict-read-write:不严格可读写缓存。如果应用程序对并发访问下的数据同步要求不是很严格的话,而且数据更新操作频率较低。采用本项,可获得良好的性能。 ◆read-write 对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读这类的并发问题. ◆transactional(事物型)在Hibernate中,事务型缓存必须运行在JTA事务环境中。在测试query时,说明其将用二级缓存 query.setCacheable true ;? 3、释放缓存: 一级缓存的释放 Session.evict XXX 将某个特定的对象从内部缓存中清除,上述的XXX 为对象的实例名。使用此方法有两种适用情形,需要及时释放对象占用的内存维持系统的稳定性是不希望当前Session继续运用此对象的状态变化来同步更新数据库。Ses

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档