源:http://www.iteye.com/problems/7842
http://dxp4598.iteye.com/blog/1250512
评:
spring + jpa(hibernate实现)配置Ehcache,如何获取ehcache统计信息
- <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
- <property name="dataSource" ref="dbcpDataSource">
- <property name="jpaVendorAdapter">
- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
- <property name="database" value="MYSQL">
- <property name="showSql" value="true">
- </bean>
- </property>
- <property name="jpaProperties">
- <props>
- <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
- <prop key="hibernate.cache.use_query_cache">true</prop>
- <prop key="hibernate.cache.use_second_level_cache">true</prop>
- <prop key="hibernate.generate_statistics">true</prop>
- <prop key="hibernate.use_sql_comments">true</prop>
- <prop key="hibernate.format_sql">true</prop>
- <prop key="hibernate.generate_statistics">true</prop>
- </props>
- </property>
- </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
相关推荐
3. **集成Ehcache与Hibernate**:在Hibernate中配置Ehcache作为二级缓存,可以将频繁查询的数据保存在内存中,避免重复的数据库调用。这涉及到修改Hibernate配置文件(如`hibernate.cfg.xml`),添加Ehcache的相关...
<artifactId>hibernate-ehcache <groupId>org.redisson <artifactId>redisson <version>3.x.x</version> <!-- 使用对应版本 --> ``` 2. **配置Redisson**: 在`application.yml`或`application....
这是一个基于Spring、JPA、Velocity和Ehcache技术构建的多用户B2B2C(Business-to-Business-to-Consumer)商城系统的毕业设计项目。这个系统涵盖了电子商务平台的基本功能,如用户管理、商品展示、购物车、订单处理...
在本配置中,Hibernate版本为5.1.3,支持JPA规范,提供了二级缓存功能,提高了数据访问性能。 4. **二级缓存(Ehcache)**: Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的...
【Spring Boot 使用 JSP 集成 Hibernate+Shiro+Ehcache 项目详解】 Spring Boot 是一个基于 Spring 框架的高度集成了多种技术的开发工具,它简化了配置过程,使得开发人员能够快速构建可运行的应用程序。在这个项目...
这里的代码可能包含了Spring Boot的启动类,Hibernate的实体类,以及使用Ehcache的缓存配置。 总的来说,这个项目展示了如何使用Spring Boot搭建一个基于Hibernate的数据访问层,利用Ehcache实现缓存功能,同时借助...
spring4.04,springmvc, hibernate4.3 ,JPA2.1, shiro1.2, ehcache2 完全整合,用Ehcache做缓存,通用的DAO、Service接口和实现。完全注解配置,事务拦截方式处理。C0p3做连接池,JSP和Freemarker做View的模板。Shiro...
例如,你可以设置`spring.jpa.hibernate.ddl-auto`来控制数据库表的自动创建或更新。 2. **EhCache集成** EhCache的集成通常需要添加EhCache的Spring Boot起步依赖,并在`application.properties`中配置EhCache的...
在Spring Boot中,我们可以通过添加`spring-boot-starter-data-jpa`依赖,再配合Hibernate或其他兼容的JPA提供商,实现对数据库的CRUD操作。此外,DataJPA还支持查询方法的自动实现,只需定义接口和方法名,即可自动...
在使用JPA与MySQL结合时,首先需要配置JPA的持久化单元(Persistence Unit),这通常在`persistence.xml`文件中完成,包括指定数据源、提供者的类型(如Hibernate)、实体类的列表等。然后,创建数据库`jpa`,确保其...
Hibernate是一个实现了JPA规范的开源ORM框架,它提供了更丰富的功能和更灵活的配置,包括对复杂查询的支持、二级缓存等。 **JPA与Hibernate的关系** JPA是一组接口和规范,而Hibernate是这些规范的具体实现之一。...
2. 配置资源文件:在src/main/resources目录下创建hibernate.cfg.xml,配置数据库连接等相关信息。 3. 实体类和配置:与普通Java工程相同,创建实体类并进行注解。 4. 使用SessionFactory:在代码中,通过...
通过Hibernate,开发者可以使用Java对象来操作数据库记录,而无需编写大量的SQL代码,支持JPA规范,兼容多种数据库,如MySQL和Oracle。 3. **Ehcache**:Ehcache是一个广泛使用的内存缓存系统,它可以提高应用程序...
只需在 Hibernate 配置文件中指定 Ehcache 作为二级缓存提供者即可。 ## 5. Ehcache 的分布式缓存 Ehcache 支持分布式缓存,通过 Terracotta 服务器实现跨节点的数据共享。这样,多台服务器上的应用可以共享同一份...
Hibernate 4在Spring 3的基础上进行了优化,支持JPA 2.0规范,提高了性能,增强了对多线程和并发的处理。 3. **Struts 2框架**:Struts 2是基于MVC模式的Java Web框架,用于简化Web应用的开发。它与Spring和...
下面将详细介绍Hibernate的jar包以及配置文件的相关知识点。 1. Hibernate的核心组件: - hibernate-core.jar:这是Hibernate的基础库,包含了核心的ORM功能,如Session接口、Entity类的管理、事务处理等。 - ...
此文件通常放在`src/main/resources`目录下,并且应包含EhCache的配置设置,例如缓存大小、过期策略等。例如: ```xml <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...
2. 配置Ehcache:在项目的resources目录下创建ehcache.xml配置文件。需要关注的是ehcache的配置在2.x和3.x版本间有很大的区别,所以需要根据所使用的版本进行正确的配置。在配置中,可以指定缓存目录、缓存模板、...
- 第二级缓存:通过配置缓存插件(如EhCache),提高数据读取速度。 - 批量操作:使用批处理更新或插入,减少数据库交互次数。 -懒加载和fetch策略:根据需求调整关联对象的加载时机,避免N+1问题。 **七、Spring...