JPA:二级缓存

1.测试代码段如下:

JPA:二级缓存_第1张图片

2.控制台输出如下,对于相同对象只发送一条sql语句(一级缓存):

JPA:二级缓存_第2张图片

2.我们在代码段中,重新声明entityManager:

JPA:二级缓存_第3张图片

.在这种情况下运行,控制台会输出两条sql语句,因为一级缓存被清空:

JPA:二级缓存_第4张图片

3.而二级缓存可以跨entityManager,使控制台只发送一条sql语句,步骤如下:

.添加配置文件:encache.xml,内容如下:

    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
    updateCheck="false">

    
             timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
        maxElementsOnDisk="10000000" diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" />
             overflowToDisk="true" diskPersistent="false" timeToLiveSeconds="0"
        diskExpiryThreadIntervalSeconds="120" />

.添加jar包:

JPA:二级缓存_第5张图片
.persistence.xml添加如下配置,并且添加该节点:

JPA:二级缓存_第6张图片

.节点:若JPA实现支持二级缓存,该节点可以配置在当前的持久化单元中

是否启用二级缓存,可配置如下值:

-ALL:所有的实体类都被缓存

-NONE:所有的实体类都不被缓存

-ENABLE SELECTIVE:标识@Cacheable(true)注解实体类将被缓存

-DISABLE SELECTIVE:缓存除标识@Cacheable(false)以外的所有实体类

-UNSPECIFIED:默认值,JPA产品默认值将都被使用

4.控制台输出如下:

JPA:二级缓存_第7张图片

 

你可能感兴趣的:(JPA:二级缓存)