`

hibernate 5的二级缓存案例讲解

阅读更多
hibernate 5的二级缓存案例讲解


大家好,今天来记录讲解一下磕磕绊绊的hibernate5 的二级缓存配置,一条路摸到黑
那么在这之前我们先了解一下hibernate的一级缓存和二级缓存分别是什么?
说句通俗的话就是 一级缓存的信息只能在同一个session间传递,而二级缓存是不同的session间可以访问的,可以跨越Session存在,可以被多个Session所共享。需要第三方缓存框架的加持

那么什么数据适合放到二级缓存中呢?
便是那些不经常改动又经常被访问的数据,比如省市信息等,前台页面经常查询而没必要每次都要去数据库查询!

那么有什么三方框架可以支持hibernate的二级缓存呢?

EHCache: 可作为进程范围内的缓存,存放数据的物理介质可以是内存或硬盘,对Hibernate的查询缓存提供了支持
OpenSymphony:可作为进程范围内的缓存,存放数据的物理介质可以是内存或硬盘,提供了丰富的缓存数据过期策略,对Hibernate的查询缓存提供了支持
SwarmCache:可作为集群范围内的缓存,但不支持Hibernate的查询缓存
JBossCache:可作为集群范围内的缓存,支持Hibernate的查询缓存

好,那么我们接下来就以EHCache来介绍一下hibernate二级缓存的用法

第一步:导入jar包(jar包附件给出
ehcache-core-2.4.3.jar
hibernate-ehcache-5.0.7.Final.jar
commons-logging-1.1.1.jar

第二步:声明缓存(在hibernate.cfg.xml 中配置)
<!-- 使用二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<!--设置缓存的类型,设置缓存的提供商 -->
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</property>
<!--但是在 hibernate 4中设置缓存提供商时是这样设置的
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>-->
<property name="hibernate.cache.use_query_cache">true</property>


第三步:需要设置EHCache配置文件
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"

>
 <diskStore path="C:/ehcache"/><!-- 需要在你的磁盘里面添加该目录 -->
         <defaultCache    
            maxElementsInMemory="10000" 
            eternal="false"  
            timeToIdleSeconds="120" 
            timeToLiveSeconds="120" 
            overflowToDisk="true" 
            maxElementsOnDisk="10000000" 
            diskExpiryThreadIntervalSeconds="120"  
            memoryStoreEvictionPolicy="LRU"   
            />  
</ehcache>


第四步:指定什么对象也就是model可以加入缓存
有两种配置方式,可以在hbm中创建安,也可以在cfg文件中创建
我们这里就以cfg文件配置为例

<class-cache usage="read-write" class="cn.patronli.domain.Order"/> <!-缓存的是对象-
<collection-cache usage="read-write" collection="cn.patronli.domain.Customer.orders"/> <!-缓存的是集合-

为了保险起见 我们需要给相对应的model  实现一个序列化接口 implements Serializable


那么如何在hbm中设置呢?需要再class后紧跟缓存配置,如下所示
<class name="Customer" table="t_customer" catalog="hibernateTest" lazy="true">
	<cache usage="read-write"/>


以上配置二选一 !!!!

那么最后我们就可以来进行测试了
public static void main(String[] args) {  
		  
        Session s1 = HibernateUtils.openSession();
        s1.beginTransaction();  
        Customer c1 = (Customer) s1.get(Customer.class, 1); // 从数据库中加载数据  
        System.out.println(c1.getName());
        s1.getTransaction().commit();  
        s1.close(); // 关闭session级别的一级缓存  
  
        Session s2 = HibernateUtils.openSession();
        s2.beginTransaction();  
        Customer c2 = (Customer) s2.get(Customer.class, 1); // 因为有了二级缓存的存在,并不会去查询数据库可以debug  观察控制台打印
        System.out.println(c2.getName());  
    }  











0
0
分享到:
评论

相关推荐

    Java高级框架应用开发案例教程 Struts2+Spring+Hibernate

    此外,Hibernate的二级缓存和缓存策略能够提高数据读取性能。 SSH整合开发的核心在于这三个框架的协同工作。Struts2处理用户请求,调用Spring管理的业务服务,这些服务又通过Hibernate与数据库进行交互。Spring作为...

    02_传智播客hibernate教程_hibernate入门案例的细节分析

    11. **缓存机制**:理解Hibernate的第一级缓存(Session级别)和第二级缓存(SessionFactory级别),以及如何配置和使用第三方缓存。 12. **性能优化**:如批处理、延迟加载、懒加载、缓存策略等提高Hibernate应用...

    Hibernate高级教程

    10. **缓存机制**:介绍Hibernate的缓存策略,包括一级缓存和二级缓存,以及第三方缓存集成,如Ehcache和Infinispan的使用。 11. **性能优化**:讲解如何通过优化查询、延迟加载、缓存策略等手段提高Hibernate应用...

    hibernate实战第二版.pdf

    书中会讲解一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存)的配置和使用,以及第三方缓存集成如 EhCache 和 Infinispan。 5. **事务管理**:在Java EE环境中,事务是保证数据一致性的重要...

    Hibernate开发实战讲解(源代码)

    8. **缓存策略**:Hibernate内置了二级缓存机制,包括一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存)。了解缓存的工作原理和使用策略,可以提高数据读取效率,减少数据库压力。 9. **事务...

    精通Hibernate:Java持久化对象技术详解[第二版]

    6. **缓存机制**:解析Hibernate的缓存策略,包括一级缓存(Session缓存)和二级缓存(如Ehcache、Infinispan),以及缓存的配置和使用。 7. **性能优化**:讨论如何通过优化配置、批处理、延迟加载、懒加载等手段...

    hibernate5.2.7-src源码

    4. 缓存机制:Hibernate包含一级缓存(Session级缓存)和二级缓存(SessionFactory级缓存),以及查询缓存,有效提高数据访问速度。 四、核心类详解 1. EntityPersister:负责实体的持久化操作,包括保存、更新、...

    hibernate教程打包下载,史上最全的HIBERNATE

    9. **第二级缓存**:Hibernate支持二级缓存,它可以提高应用程序性能,减少对数据库的访问。二级缓存分为提供商特定的区域和通用的查询缓存。 10. **性能优化**:教程可能涵盖如何优化Hibernate,例如批量操作、...

    传智播客李勇hibernate PPT

    10. **缓存机制**:讲解Hibernate的一级缓存和二级缓存,以及如何配置和使用第三方缓存如EhCache。 11. **性能优化**:分享一些提高Hibernate性能的策略,如合理设计实体关系、优化查询、使用批处理等。 12. **...

    精通Hibernate+源代码

    缓存是提高应用性能的关键,Hibernate的缓存机制如一级缓存(Session缓存)和二级缓存(如EHCache或Infinispan)的原理和配置方法都会被详尽解释。 此外,书中还会涉及Hibernate的性能优化技巧,如延迟加载、批处理...

    精通hibernate源码ch3

    5. 第二级缓存:除了默认的一级缓存外,Chapter 3可能涉及启用和配置第二级缓存,提高应用性能。 6. 查询:详细讲解HQL和Criteria API的用法,包括条件查询、分页、排序等。 四、源码分析 深入理解Hibernate源码...

    Hibernate应用案例

    【Hibernate应用案例】深入解析 ...同时,对于更高级的主题,如第二级缓存、Cascading操作、Hibernate事件监听等,也值得深入研究。在实际开发中,结合Spring框架使用Hibernate,可以实现更高效、更便捷的数据库操作。

    传智播客-hibernate框架开发视频第day01-day04资料

    - 数据缓存:了解Hibernate的二级缓存机制,提高应用程序性能。 3. **Day03:高级特性** - 关联映射:深入学习一对一、一对多、多对一、多对多的关联映射,以及懒加载和立即加载策略。 - 改动追踪与脏检查:理解...

    Hibernate实战(第2版) 高清扫描版

    8. **第二级缓存和查询缓存**:讨论Hibernate的缓存机制,如何使用第二级缓存提高性能,以及查询缓存如何减少数据库查询次数。 9. **性能优化**:提供一系列优化策略,如延迟加载、批处理、连接池配置等,帮助...

    Hibernate技术手册

    8. **缓存机制**:介绍Hibernate的缓存层次,一级缓存(Session缓存)、二级缓存(SessionFactory缓存)和查询缓存,以及第三方缓存集成如Ehcache和Infinispan。 9. **事务管理**:讲解Hibernate如何支持事务,包括...

    精通Hibernate(孙卫琴)

    孙卫琴在书中分享了关于缓存策略(一级缓存和二级缓存)、延迟加载、批处理更新等提升Hibernate性能的技巧。同时,他还探讨了事务管理和并发控制,这些都是确保数据一致性和完整性的关键。 最后,书中的实战案例...

    hibernate全套学习课件ppt

    8. **缓存机制**:Hibernate提供了一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),提高数据读取效率并减少对数据库的压力。 9. **一对多、多对一、多对多关联映射**:Hibernate支持各种...

    hibernate_reference.pdf

    - **二级缓存**:可选地添加外部缓存插件(如 Ehcache)来提高性能。 - **懒加载**:默认情况下,Hibernate 使用懒加载策略来延迟加载实体的关联对象,从而减少不必要的数据库访问。 #### 九、高级特性 - **实体...

    hibernate经典教材从入门到精通(共四篇)

    第三篇可能涉及到Hibernate的缓存机制,包括一级缓存和二级缓存,以及如何配置和使用第三方缓存服务,如 EhCache 或 Infinispan。此外,事务管理和并发控制也是重要的内容,如乐观锁和悲观锁的概念及其在Hibernate中...

    Hibernate实战第2版.zip

    7. Caching缓存机制:讨论了Hibernate的缓存策略,包括一级缓存(Session Cache)和二级缓存(SessionFactory Cache),以及第三方缓存解决方案如Ehcache和Infinispan的集成。 8. Advanced Topics:深入探讨高级...

Global site tag (gtag.js) - Google Analytics