`
MauerSu
  • 浏览: 513920 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jpa hibernate 下配置ehcache

 
阅读更多

源:http://www.iteye.com/problems/7842

http://dxp4598.iteye.com/blog/1250512

评:

spring + jpa(hibernate实现)配置Ehcache,如何获取ehcache统计信息

Xml代码  收藏代码
  1. <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
  2.         <property name="dataSource" ref="dbcpDataSource">  
  3.         <property name="jpaVendorAdapter">  
  4.             <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
  5.                 <property name="database" value="MYSQL">  
  6.                 <property name="showSql" value="true">  
  7.             </bean>  
  8.         </property>  
  9.         <property name="jpaProperties">  
  10.             <props>  
  11.                 <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>  
  12.                 <prop key="hibernate.cache.use_query_cache">true</prop>  
  13.                 <prop key="hibernate.cache.use_second_level_cache">true</prop>  
  14.                 <prop key="hibernate.generate_statistics">true</prop>  
  15.                 <prop key="hibernate.use_sql_comments">true</prop>  
  16.                 <prop key="hibernate.format_sql">true</prop>  
  17.                 <prop key="hibernate.generate_statistics">true</prop>  
  18.             </props>  
  19.         </property>  
  20.     </bean>  


Entity上面也加了Cache注释,ehcache.xml也配置好了,但是jpa如何获得ehcache的一些统计信息呢?

缓存应该是生效了,查询很多次只生成一条SQL语句,像Hibernate里面SessionFactory里面有个statistics()函数 可以打印ehcache统计信息的,不知道JPA里面怎么样打印ehcache的统计信息,比如缓存命中情况等,要不然光配置好了,不能查看统计情况也没 有意义啊

 

已经搞定了:-)

Session session = (Session)baseDAO.getEntityManager().getDelegate();
SessionFactory sessionFactory = session.getSessionFactory();

这样就可以获得SessionFactory了,然后就可以调用里面的getStatistics()获得统计信息了,现在结贴。

 

 

在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输出日志中可以看到缓存机制作用

log4j.logger.org.hibernate.cache=debug

 

分享到:
评论

相关推荐

    Hibernate4 + Ehcache 例子

    3. **集成Ehcache与Hibernate**:在Hibernate中配置Ehcache作为二级缓存,可以将频繁查询的数据保存在内存中,避免重复的数据库调用。这涉及到修改Hibernate配置文件(如`hibernate.cfg.xml`),添加Ehcache的相关...

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

    &lt;artifactId&gt;hibernate-ehcache &lt;groupId&gt;org.redisson &lt;artifactId&gt;redisson &lt;version&gt;3.x.x&lt;/version&gt; &lt;!-- 使用对应版本 --&gt; ``` 2. **配置Redisson**: 在`application.yml`或`application....

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

    这是一个基于Spring、JPA、Velocity和Ehcache技术构建的多用户B2B2C(Business-to-Business-to-Consumer)商城系统的毕业设计项目。这个系统涵盖了电子商务平台的基本功能,如用户管理、商品展示、购物车、订单处理...

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

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

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

    【Spring Boot 使用 JSP 集成 Hibernate+Shiro+Ehcache 项目详解】 Spring Boot 是一个基于 Spring 框架的高度集成了多种技术的开发工具,它简化了配置过程,使得开发人员能够快速构建可运行的应用程序。在这个项目...

    Spring boot hibernate ehcache maven 整合源码

    这里的代码可能包含了Spring Boot的启动类,Hibernate的实体类,以及使用Ehcache的缓存配置。 总的来说,这个项目展示了如何使用Spring Boot搭建一个基于Hibernate的数据访问层,利用Ehcache实现缓存功能,同时借助...

    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...

    SpringBootJPA + EhCache

    例如,你可以设置`spring.jpa.hibernate.ddl-auto`来控制数据库表的自动创建或更新。 2. **EhCache集成** EhCache的集成通常需要添加EhCache的Spring Boot起步依赖,并在`application.properties`中配置EhCache的...

    spring boot 集成activemq Datajpa Ehcache

    在Spring Boot中,我们可以通过添加`spring-boot-starter-data-jpa`依赖,再配合Hibernate或其他兼容的JPA提供商,实现对数据库的CRUD操作。此外,DataJPA还支持查询方法的自动实现,只需定义接口和方法名,即可自动...

    JPA+MySQL完整实例

    在使用JPA与MySQL结合时,首先需要配置JPA的持久化单元(Persistence Unit),这通常在`persistence.xml`文件中完成,包括指定数据源、提供者的类型(如Hibernate)、实体类的列表等。然后,创建数据库`jpa`,确保其...

    jpa_hibernate需要jar包.zip

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

    JAVA 使用hibernate配置实例

    2. 配置资源文件:在src/main/resources目录下创建hibernate.cfg.xml,配置数据库连接等相关信息。 3. 实体类和配置:与普通Java工程相同,创建实体类并进行注解。 4. 使用SessionFactory:在代码中,通过...

    jar包整合:Springmvc+hibernate+Ehcache+shior+mysql+Oracle+fastjson

    通过Hibernate,开发者可以使用Java对象来操作数据库记录,而无需编写大量的SQL代码,支持JPA规范,兼容多种数据库,如MySQL和Oracle。 3. **Ehcache**:Ehcache是一个广泛使用的内存缓存系统,它可以提高应用程序...

    ehcache

    只需在 Hibernate 配置文件中指定 Ehcache 作为二级缓存提供者即可。 ## 5. Ehcache 的分布式缓存 Ehcache 支持分布式缓存,通过 Terracotta 服务器实现跨节点的数据共享。这样,多台服务器上的应用可以共享同一份...

    spring3+hibernate4+struts2+dbcp+mysql+json+ehcache+dom4j 合集包

    Hibernate 4在Spring 3的基础上进行了优化,支持JPA 2.0规范,提高了性能,增强了对多线程和并发的处理。 3. **Struts 2框架**:Struts 2是基于MVC模式的Java Web框架,用于简化Web应用的开发。它与Spring和...

    hibernateJar包及配置文件

    下面将详细介绍Hibernate的jar包以及配置文件的相关知识点。 1. Hibernate的核心组件: - hibernate-core.jar:这是Hibernate的基础库,包含了核心的ORM功能,如Session接口、Entity类的管理、事务处理等。 - ...

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

    此文件通常放在`src/main/resources`目录下,并且应包含EhCache的配置设置,例如缓存大小、过期策略等。例如: ```xml &lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...

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

    2. 配置Ehcache:在项目的resources目录下创建ehcache.xml配置文件。需要关注的是ehcache的配置在2.x和3.x版本间有很大的区别,所以需要根据所使用的版本进行正确的配置。在配置中,可以指定缓存目录、缓存模板、...

    Hibernate配置

    - 第二级缓存:通过配置缓存插件(如EhCache),提高数据读取速度。 - 批量操作:使用批处理更新或插入,减少数据库交互次数。 -懒加载和fetch策略:根据需求调整关联对象的加载时机,避免N+1问题。 **七、Spring...

Global site tag (gtag.js) - Google Analytics