当前位置: 代码迷 >> 综合 >> JPA 二级缓存
  详细解决方案

JPA 二级缓存

热度:53   发布时间:2023-12-18 09:31:39.0

一级缓存:
session级别,同一次session,同sql只执行一次,调用多次走一级缓存
注意:要开启事物或者手动维护一次session才会有一级缓存!!并且jps的find之类的方法不是,只有通过EntityManager执行的sql才会有一级缓存

比如:

// 一级缓存不生 效
@Test
@Transactional
public void t1() {userDao.findAll();userDao.findAll();userDao.findAll();
}
// 一级缓存生效
@Test
@Transactional
public void t1() {entityManager.find(User.class, 1l);entityManager.find(User.class, 1l);entityManager.find(User.class, 1l);
}

二级缓存:
1:实体类直接打上 javax.persistence.Cacheable 标记。
只要打上JPA的@cacheable标记即可默认开启该实体的2级缓存

@Entity  
@Table(name ="dict")  
@Cacheable  
public class Dict extends IdEntity{}  

2.ehcache来实现二级缓存