spring data jpa使用二级缓存
来源:互联网 发布:蔬菜交易软件 编辑:程序博客网 时间:2024/05/01 00:16
在用spring data jpa的过程中,采用了ehcache 来做缓存, 是否需要二级缓存,一般不需要,这得看业务的需要,因为这东西如果配置不好,反而会导致性能下降,但如果是有些数据,基本不改动,长期不变,很少修改,而且数据量适中,并且外部使用频率高的情况下,还是可以使用的。就目前研究spring data jpa 来说,有三种情况下有可能会使用到缓存
1. spring data jpa 自身的方法
2. 扩展spring data jpa 的方法
3.完全自己用EntityManager 写语句的缓存.
其实现方式,基本如下,用代码表示
如果是自己写语句的缓存,用如下方式
当然在实体类上也要注明,使用缓存
至于ehcache 的配置很简单的几行xml 配置,比如
在这几种情况下,测试,一旦缓存之后,是看不到发出sql语句的,说明确实使用了缓存.
1. spring data jpa 自身的方法
2. 扩展spring data jpa 的方法
3.完全自己用EntityManager 写语句的缓存.
其实现方式,基本如下,用代码表示
public interface UserDao extends CrudRepository<User,Long>,UserCustomer{ /** * 第一种情况的缓存,处理spring data jpa自身的方法 * @param id * @return */ @QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") }) public User findById(long id); /** * 第二种情况缓存,处理能根据 spring data jpa 扩展的方法. * @return */ @Query("from User") @QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") }) List<User> findAllCached(); }
如果是自己写语句的缓存,用如下方式
public class UserDaoImpl implements UserCustomer { @PersistenceContext private EntityManager em; /** * 第三种缓存,采用 setHint 的方式处理. */ public User findByCustomizeId() { return (User) em.createQuery("from User p where p.id=1") .setHint("org.hibernate.cacheable", true).getSingleResult(); }
当然在实体类上也要注明,使用缓存
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY,region="mycache")@Cacheable(true)@Entity@Table(name="XUSER")public class User {...........}
至于ehcache 的配置很简单的几行xml 配置,比如
<ehcache> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> <cache name="mycache" maxElementsInMemory="2000" eternal="false" timeToIdleSeconds="18000" timeToLiveSeconds="36000" overflowToDisk="false" /></ehcache>
在这几种情况下,测试,一旦缓存之后,是看不到发出sql语句的,说明确实使用了缓存.
0 0
- spring data jpa使用二级缓存
- spring data jpa使用二级缓存
- Spring Data JPA 使用
- spring-data-jpa 使用
- spring data jpa使用
- spring-data-jpa 使用
- Spring Data JPA使用
- spring-data-jpa 使用
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 使用 Spring Data JPA 简化 JPA 开发
- 产品经理必须陪程序员加班吗?
- 2568:前进
- Canny边缘检测原理
- Servlet-监听器Listener
- 集成项目经理在工作中的常见改进点
- spring data jpa使用二级缓存
- IE6 CSS Fixed 固定位置 防闪屏
- 如何让一个程序员变成产品经理?
- Servlet-模块化开发web fragment
- WAV文件格式分析
- 黑马程序员--protocol代理模式
- android图像图像处理——自定义组件的属性
- Servlet-文件上传@MultipartConfig,Part
- iOS9 HTTP 不能正常使用的解决办法