spring boot jpa 底层实现为hibernate,hibernate的缓存机制分为
1 . 一级缓存(session缓存)
2. 二级缓存(id查询缓存)
3. 查询缓存
导入hibernate相关依赖 ,其中 ehcache为实现二级缓存和查询缓存需要的缓存框架。
项目结构图如下:
hibernate的主配置文件如下:
1 <?xml version='1.0' encoding='utf-8'?>
2 "-//Hibernate/Hibernate Configuration DTD//EN"
4 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
5
6
7
8
9
10 com.mysql.jdbc.Driver
11 jdbc:mysql://127.0.0.1:3306/shop-db
12 root
13 123456
14
15
16 org.hibernate.dialect.MySQL5Dialect
17
18
19
20
21 true
22
23 true
24
25 update
26
27
28 20
29
30 utf-8
31
32
33
34 true
35
36 org.hibernate.cache.ehcache.EhCacheRegionFactory
37
38
39 true
40
41
42
43
44
45
46
47
48
49
50
51
52
主配置文件中需要注意的事项:
1 mapping 标签必须位于 property 标签之后
实体的映射文件:
/p>
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
缓存矿建的配置文件:ehcache.xml
验证一级缓存:(当session不销毁时,执行相同的查询操作)
验证结果:发现执行了一次查询动作
验证二级缓存
1、在主配置文件中,开启二级缓存,同时指定实现的缓存框架
true
org.hibernate.cache.ehcache.EhCacheRegionFactory
2、增加缓存框架的配置文件:ehcache.xml
针对具体需要进行二级缓存的实体,配置缓存策略 ( usage="read-write" )
实现方式:
1. 在主配置文件中指定需要二级缓存的实体,缓存的策略 以及具体的缓存方式
class="entity.A" : 需要缓存的实体
usage="read-write":缓存读和更新
region="sample": 缓存框架中对用的缓存方式
2.在实体的映射文件中进行配置
验证二级缓存:(在二级缓存开启的情况下,以不同的session去执行同一次查询,验证结果)
验证查询缓存,此处记录和二级缓存同时使用的情况
1.在主配置文件中开启查询缓存
true
2.在代码中设置开启缓存
验证结果:
JPA开启二级缓存
由于jpa的底层实现是hibernate,所以开启方式类似,具体源码