JPA-5 使用二级缓存
来源:互联网 发布:认证报名保存数据失败 编辑:程序博客网 时间:2024/06/12 19:15
在JPA中,第一级别的缓存是EntityManager级别的,其属于事务范围的缓存,由JPA的实现产品负责管理;而第二级别的缓存是EntityManagerFactory级别的缓存,其属于进程范围的缓存。
JPA使用二级缓存的具体实现代码下载地址:http://download.csdn.net/download/bingbeichen/9807876。
1. 实现步骤
①. 在persistence.xml文件中添加二级缓存相关的配置
<!-- 二级缓存相关 --><!-- 配置启用二级缓存 --><property name="cache.use_second_level_cache" value="true"></property><!-- 配置Hibernate二级缓存所使用的插件 --><property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"></property><!-- 配置启用查询缓存 --><property name="hibernate.cache.use_query_cache" value="true"/>
②. 添加Hibernate二级缓存插件所依赖的jar包和配置文件
复制hibernate-release-4.2.4.Final\lib\optional\ehcache*.jar到当前应用的类路径下,并复制hibernate-release-4.2.4.Final\project\etc\ehcache.xml文件到当前应用的类路径下。
③. 在需要被缓存的实体类上添加@Cacheable(true)注解
@Cacheable(true)@Table(name = "JPA_CUSTOMERS")@Entitypublic class Customer { private Integer id; private String name; private String email; private Integer age; private Date createTime; private Date birthday; // ...}
④. 在persistence.xml文件中添加启用二级缓存的配置
<!-- 配置启用二级缓存 --><shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
⑤. 开始使用二级缓存
public class JPATestSecondLevelCache { private EntityManagerFactory entityManagerFactory; private EntityManager entityManager; private EntityTransaction entityTransaction; @Test public void testSecondLevelCache() { // 一级缓存存在,故只发送一条SELECT语句// Customer customer1 = entityManager.find(Customer.class, 1);// Customer customer2 = entityManager.find(Customer.class, 1); Customer customer1 = entityManager.find(Customer.class, 1); entityTransaction.commit(); entityManager.close(); /** * 二级缓存是跨entityManager的,具体实现步骤如下: * 1). 在persistence.xml文件中添加二级缓存相关的配置 * 2). 添加Hibernate二级缓存插件所依赖的jar包和配置文件 * 3). 在需要被缓存的实体类上添加@Cacheable(true)注解 * 4). 在persistence.xml文件中添加启用二级缓存的配置 */ entityManager = entityManagerFactory.createEntityManager(); entityTransaction = entityManager.getTransaction(); entityTransaction.begin(); Customer customer2 = entityManager.find(Customer.class, 1); } @Before public void init() { String persistenceUnitName = "JPA-4-DoubleManyToOne"; entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName); entityManager = entityManagerFactory.createEntityManager(); entityTransaction = entityManager.getTransaction(); // 开启事务 entityTransaction.begin(); } @After public void destory() { entityTransaction.commit(); entityManager.close(); entityManagerFactory.close(); }}
2. shared-cache-mode节点
<shared-cache-mode>
节点:若JPA实现支持二级缓存,该节点可以配置在当前的持久化单元中,指定是否启用二级缓存,可配置如下值:
- ALL:所有的实体类都被缓存;
- NONE:所有的实体类都不被缓存;
- ENABLE_SELECTIVE:标识@Cacheable(true)注解的实体类将被缓存;
- DISABLE_SELECTIVE:除标识 @Cacheable(false)注解以外的所有实体类将被缓存;
- UNSPECIFIED:默认值,JPA产品默认值将被使用。
0 0
- JPA-5 使用二级缓存
- JPA二级缓存的使用
- spring data jpa使用二级缓存
- JPA学习笔记 - 使用二级缓存
- spring data jpa使用二级缓存
- JPA环境下使用Hibernate二级缓存
- ehCache基于JPA的二级缓存的使用
- 【JPA】使用hibernate的jpa的二级缓存配置
- EJB3缓存 JPA环境下使用Hibernate二级缓存
- JPA学习笔记(11)——使用二级缓存
- JPA学习笔记(12)——使用二级缓存
- JPA学习笔记(12)——使用二级缓存
- JPA + EHCache 二级缓存
- 清空JPA二级缓存
- JPA学习笔记-二级缓存
- JPA的二级缓存
- jpa的一级和二级缓存
- 缓存技术的使用(hibernate或jpa的二级缓存,以及页面jsp级别的缓存)
- LeetCode之Best Time to Buy and Sell Stock
- ubiuntu截屏
- 关于纹理合成的Matlab教程
- linux挂载概念理解
- linux下find指令用法
- JPA-5 使用二级缓存
- 作为一名初学者说说js从零开始面向对象
- 矩阵快速幂求斐波那契数列
- ZOJ
- 作为一名初学者说说js从零开始面向对象
- linux常用命令详解
- Cookie练习
- 539. Minimum Time Difference
- 京东实习笔试——分堆A