美文网首页
JPA学习笔记 二级缓存

JPA学习笔记 二级缓存

作者: 殷俊杰 | 来源:发表于2018-03-26 15:49 被阅读0次
        User user=entityManager.find(User.class,5);
        User user2=entityManager.find(User.class,5);

输出

Hibernate: 
    select
        user0_.id as id1_6_0_,
        user0_.name as name2_6_0_ 
    from
        user user0_ 
    where
        user0_.id=?

很显然,只向数据库发起一次查询,这就是一级缓存的作用

        User user=entityManager.find(User.class,5);
        entityManager.close();
        entityManager=entityManagerFactory.createEntityManager();
        User user2=entityManager.find(User.class,5);

会查两次,EntityManager关闭了,缓存也就失效了

Hibernate: 
    select
        user0_.id as id1_6_0_,
        user0_.name as name2_6_0_ 
    from
        user user0_ 
    where
        user0_.id=?
Hibernate: 
    select
        user0_.id as id1_6_0_,
        user0_.name as name2_6_0_ 
    from
        user user0_ 
    where
        user0_.id=?

使用二级缓存
所谓的二级缓存,也就是可以跨entityManager的缓存,也就是说:就算你关闭了entityManager,缓存也依然在。

在配置文件persistence.xml中配置

<!-- 二级缓存相关 -->
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>
<property name="hibernate.cache.use_query_cache" value="true"/>

启用二级缓存:
缓存需要以下包


image.png

引入jar包时注意jar包版本

1.在实体类上加注解@Cacheable(true)

@Cacheable(true)
@Table(name="USER")
@Entity
public class User ...

在persistence.xml文件中配置二级缓存的策略

<!-- 
配置二级缓存的策略 
ALL:所有的实体类都被缓存
NONE:所有的实体类都不被缓存. 
ENABLE_SELECTIVE:标识 @Cacheable(true) 注解的实体类将被缓存
DISABLE_SELECTIVE:缓存除标识 @Cacheable(false) 以外的所有实体类
UNSPECIFIED:默认值,JPA 产品默认值将被使用
-->
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>

注意该配置要放在provider和class节点的后边
输出,只查了一次

Hibernate: 
    select
        user0_.id as id1_6_0_,
        user0_.name as name2_6_0_ 
    from
        user user0_ 
    where
        user0_.id=?

相关文章

  • JPA学习笔记 二级缓存

    输出 很显然,只向数据库发起一次查询,这就是一级缓存的作用 会查两次,EntityManager关闭了,缓存也就失...

  • jpa的使用

    本文章只是自己在学习中记的笔记(可能有点乱),只提供参考。如有错误请指出 什么是jpa JPA (Java Per...

  • 二、JPA 入门

    关联映射 一对多(多对一) 双向关联 多对多的双向关联 JPA 二级缓存的使用 (使用的 ehcache) 环境搭...

  • 【Spring Data 系列学习】了解 Spring Data

    在开始学习 Spring Data JPA 之前,首先讨论下 Spring Data Jpa、JPA 和 Hibe...

  • SpringBoot整合JPA与Swagger

    1、整合JPA 之前我们学习过SpringMVC整合JPA,今天来尝试一下SpringBoot整合JPA 1.1 ...

  • Spring Data JPA 学习笔记

    说明 首先来说JPA是一个持久化规范,也就是说当我们用JPA的时候我们不需要去选面向Hibernate的api编程...

  • Spring Boot学习笔记-JPA

    初步入门 可以参考:程序猿DD的这篇文章Spring Boot中使用Spring-data-jpa让数据访问更简单...

  • Spring Data JPA: Projection

    学习的文章资料: Spring Data JPA进阶(二):Projections JPA 自定义返回字段映射 s...

  • jpa——学习

    总结精炼于http://www.yiibai.com/jpa/jpa_architecture.html其他不错的...

  • SpringBoot学习笔记三 | 整合JPA

    JPA全称(Java Persistence API),JPA 的目标之一是制定一个可以由很多供应商实现的API,...

网友评论

      本文标题:JPA学习笔记 二级缓存

      本文链接:https://www.haomeiwen.com/subject/ywlrqftx.html