`
dxp4598
  • 浏览: 82956 次
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate JPA 中配置Ehcache二级缓存

 
阅读更多

在Hibernate3 JPA里配置了一下非分布式环境的二级缓存,效果不错。具体过程如下:

 

1, 需要引入的jar包

      http://ehcache.org/downloads/catalog 下载的包里已经包含了简单的例子和javadoc

 

      ehcache-core-2.4.6.jar (必需)

      ehcache-terracotta-2.4.6.jar (必需)

      slf4j-api-1.6.1.jar

      slf4j-jdk14-1.6.1.jar

 

 

2, 在JPA的persistence.xml中加入以下配置

 

      <property name="hibernate.cache.provider_class" 

                value="org.hibernate.cache.SingletonEhCacheProvider" />
     <property name="hibernate.cache.provider_configuration" value="/ehcache.xml" />
     <property name="hibernate.cache.use_second_level_cache" value="true" />
     <property name="hibernate.cache.use_query_cache" value="true" />

 

 

3, 对ehcache进行简单的设置(ehcache.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <ehcache>
      <defaultCache maxElementsInMemory="1000" eternal="false"
           timeToIdleSeconds="1200" timeToLiveSeconds="1200" overflowToDisk="false"
           clearOnFlush="true">
      </defaultCache>

       <!-- 单独对某个entity的缓存策略设置-->
      <cache name="com.payment.entity.PromotionEntity" maxElementsInMemory="100"

           eternal="false"
           timeToIdleSeconds="1200" timeToLiveSeconds="1200" overflowToDisk="false"
           clearOnFlush="true">
      </cache>
     </ehcache>

 

 

4, JPA的Entity类中声明缓存的隔离机制

 

       import org.hibernate.annotations.Cache;
       import org.hibernate.annotations.CacheConcurrencyStrategy;

 

      @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
      @Entity
      @Table(name = "catagory")
      public class CatagoryEntity extends BaseEntity { ... }

 

 

5, 如何使用二级缓存中的对象

       在Hibernate中可以通过org.hibernate.Query.setCacheable(true);

       在JPA中,由于EntityManager中得到的javax.persistence.Query没有这个方法了。我们可以通过

       javax.persistence.Query.setHint(”org.hibernate.cacheable”, true);来实现读取二级缓存。

 

 

 

6, 在log4j输出日志中可以看到缓存机制作用

 

      18:05:30,682 DEBUG SessionImpl:265 - opened session at timestamp: 5410486397673472
      18:05:30,682 DEBUG StandardQueryCache:125 - checking cached query results in region:     

          org.hibernate.cache.StandardQueryCache
      18:05:30,682 DEBUG EhCache:74 - key: sql: select promotione0_.id as id2_, 

          promotione0_.catagory_id as catagory6_2_, promotione0_.description as descript2_2_, 

          promotione0_.enabled as enabled2_, promotione0_.name as name2_, promotione0_.picture as

          picture2_, promotione0_.product_id as product7_2_ from promotion promotione0_; parameters:

          ; named parameters: {}
      18:05:30,682 DEBUG StandardQueryCache:183 - Checking query spaces for up-to-dateness:

          [promotion]
      18:05:30,682 DEBUG EhCache:74 - key: promotion
      18:05:30,682 DEBUG EhCache:83 - Element for promotion is null
      18:05:30,682 DEBUG StandardQueryCache:140 - returning cached query results
      18:05:30,714 DEBUG EhCache:74 - key: com.payment.entity.PromotionEntity#1
      18:05:30,714 DEBUG StatefulPersistenceContext:893 - initializing non-lazy collections
      18:05:30,714 DEBUG EhCache:74 - key: com.payment.entity.PromotionEntity#2
      18:05:30,714 DEBUG StatefulPersistenceContext:893 - initializing non-lazy collections
      18:05:30,714 DEBUG EhCache:74 - key: com.payment.entity.PromotionEntity#3
      18:05:30,714 DEBUG StatefulPersistenceContext:893 - initializing non-lazy collections
      18:05:30,714 DEBUG EhCache:74 - key: com.payment.entity.PromotionEntity#4
      18:05:30,714 DEBUG StatefulPersistenceContext:893 - initializing non-lazy collections
      18:05:30,714 DEBUG EhCache:74 - key: com.payment.entity.PromotionEntity#5

 

 

分享到:
评论
1 楼 qq362228416 2012-07-27  
正好,试一下

相关推荐

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...

    springmvc4+spring4+hibernate5.1.3+二级缓存ehcache+fastjson配置

    在本配置中,Hibernate版本为5.1.3,支持JPA规范,提供了二级缓存功能,提高了数据访问性能。 4. **二级缓存(Ehcache)**: Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的...

    JPA-5 使用二级缓存

    但需要注意的是,二级缓存可能会增加数据的一致性风险,因为不同事务可能同时修改缓存中的同一数据。 使用JPA的二级缓存,我们需要进行以下几个步骤: 1. **选择缓存提供商**:JPA本身并不提供二级缓存实现,而是...

    spring-boot-starter-data-jpa 的二级缓存

    当我们要在Spring Boot项目中开启二级缓存时,一个常见的做法是整合Ehcache,利用它来实现JPA实体的二级缓存。二级缓存是基于会话工厂级别的缓存,用于缓存那些跨多个会话共享的数据。在Hibernate中,二级缓存默认是...

    Hibernate4 + Ehcache 例子

    标题 "Hibernate4 + Ehcache 例子" 暗示了我们将探讨如何在Java应用程序中集成Hibernate4 ORM框架和Ehcache缓存系统。这个例子可能是关于如何提高数据访问性能,通过缓存策略来减少数据库查询的次数。 描述中的链接...

    Hibernate二级缓存+分页功能

    2. 配置hibernate.cfg.xml,启用二级缓存并指定Ehcache配置文件。 3. 在实体类上添加`@Cacheable`或`@Cache`注解,声明哪些实体类或属性需要缓存。 4. 对于特定查询,可以使用`@CacheRegion`注解来定义查询结果的...

    spring boot 使用jsp 集成hibernate+shiro+ehcache项目分享

    在这个项目中,我们将深入探讨如何将 Spring Boot 与 Hibernate、Shiro 和 Ehcache 结合,以实现一个高效且安全的 Web 应用。 **1. Spring Boot 与 Hibernate 集成** Hibernate 是一个强大的对象关系映射(ORM)...

    Hibernate二级缓存的应用

    - `hibernate-ehcache-4.1.7.Final.jar`: Hibernate与EHCache的集成库,实现了二级缓存功能。 - `hibernate-jpa-2.0-api-1.0.1.Final.jar`: JPA API,提供了ORM规范接口。 - `hibernate-commons-annotations-4.0.1....

    Hibernate二级缓存实例.rar

    在实现二级缓存时,我们需要配置Hibernate的缓存提供者,如EhCache或Infinispan。以EhCache为例,我们需要在hibernate.cfg.xml配置文件中添加对应的provider和cache配置: ```xml &lt;property name="hibernate.cache....

    Spring Boot 2.x的EhCache缓存的使用问题详解.docx

    第二次调用则会从缓存中获取数据,从而避免了重复的数据库查询。 通过这种方式,Spring Boot 2.x与EhCache的集成使得我们可以轻松地在应用程序中启用缓存,提升性能。不过,要注意根据实际需求调整EhCache的配置,...

    SpringBootJPA + EhCache

    - **MaxEntries**: 指定缓存中最大条目数量,当达到上限时,根据特定的淘汰策略(如LRU, FIFO等)移除旧的缓存项。 - **Transactions**: EhCache支持事务,可以在事务范围内保证缓存的一致性。 6. **缓存异常处理...

    详解spring boot集成ehcache 2.x 用于hibernate二级缓存

    "Spring Boot 集成 Ehcache 2.x 用于 Hibernate 二级缓存" 本篇文章主要介绍了如何在 ...本文主要介绍了如何在 Spring Boot 中集成 Ehcache 2.x 作为 Hibernate 的二级缓存,提供了一份详细的配置示例,供读者参考。

    Spring boot hibernate ehcache maven 整合源码

    在Spring Boot应用中,它可以作为二级缓存,提高数据读取速度。通过在`pom.xml`中引入Ehcache的依赖,并在配置文件中进行相应设置,我们可以指定哪些数据需要被缓存,以及缓存策略。Ehcache的使用降低了数据库的负载...

    ehcache

    在 Hibernate 中,Ehcache 可以作为二级缓存提供服务,将查询结果存储在缓存中,避免重复查询数据库。只需在 Hibernate 配置文件中指定 Ehcache 作为二级缓存提供者即可。 ## 5. Ehcache 的分布式缓存 Ehcache ...

    spring boot 集成activemq Datajpa Ehcache

    最后,可能还设置了Ehcache缓存策略,用于存储频繁访问的数据,提升性能。 总结来说,通过Spring Boot集成ActiveMQ、DataJPA和Ehcache,我们可以构建一个高效、响应快速的应用平台。ActiveMQ提供可靠的异步通信,...

    spring hibernate cache

    这里我们以 EhCache 为例,需要在 Hibernate 配置中启用二级缓存并指定缓存提供者。 2. 配置缓存策略:在 Hibernate 的配置文件中,定义哪些实体类需要使用二级缓存,并设置缓存策略,如读写模式、查询缓存等。 3....

    springmvc4_hibernate4.3_JPA2.1_Shiro1.2_Ehcache

    spring4.04,springmvc, hibernate4.3 ,JPA2.1, shiro1.2, ehcache2 完全整合,用Ehcache做缓存,通用的DAO、Service接口和实现。完全注解配置,事务拦截方式处理。C0p3做连接池,JSP和Freemarker做View的模板。Shiro...

    jpa_hibernate需要jar包.zip

    Hibernate是一个实现了JPA规范的开源ORM框架,它提供了更丰富的功能和更灵活的配置,包括对复杂查询的支持、二级缓存等。 **JPA与Hibernate的关系** JPA是一组接口和规范,而Hibernate是这些规范的具体实现之一。...

    基于Spring+JPA+Velocity+Ehcache的商城系统源码.zip

    **Ehcache缓存**: Ehcache是一个广泛使用的Java缓存解决方案,它可以提高系统的响应速度和效率。在本商城系统中,Ehcache可能被用来缓存频繁访问的数据,比如热门商品、用户登录信息等,减少对数据库的直接访问,...

    JAVA 使用hibernate配置实例

    - 第二级缓存:为了提高性能,可以配置Hibernate使用第二级缓存,如Ehcache。 - JPA支持:Hibernate同时也支持Java Persistence API (JPA),可以通过@PersistenceUnit注解来管理EntityManagerFactory。 通过这个...

Global site tag (gtag.js) - Google Analytics