maven的pom文件配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
// 添加 ---------------------------------
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<exclusions>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.5.2</version>
</dependency>
// -------------------------------------------------
</dependencies>
配置文件
#开启二级缓存
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.cache.use_query_cache=true
#指定缓存provider
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
实体类配置
@Entity
@Table(name = "students")
@Cacheable(true)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "entityCache")
@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler", "fieldHandler"})
public class Students {
private Integer stuId;
private String stuName;
private Integer stuAge;
private Integer stuSex;
private Date stuBirth;
private Collections collections;
private Teacher teacher;
@Id
@Column(name = "stu_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getStuId() {
return stuId;
}
public void setStuId(Integer stuId) {
this.stuId = stuId;
}
@Column(name = "stu_name", length = 15)
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
@Column(name = "stu_age", length = 3)
public Integer getStuAge() {
return stuAge;
}
public void setStuAge(Integer stuAge) {
this.stuAge = stuAge;
}
@Column(name = "stu_sex", length = 1)
public Integer getStuSex() {
return stuSex;
}
public void setStuSex(Integer stuSex) {
this.stuSex = stuSex;
}
@Column(name = "stu_birth")
@Temporal(TemporalType.DATE)
public Date getStuBirth() {
return stuBirth;
}
public void setStuBirth(Date stuBirth) {
this.stuBirth = stuBirth;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "coll_id")
public Collections getCollections() {
return collections;
}
public void setCollections(Collections collections) {
this.collections = collections;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "teacher_id")
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
@Override
public String toString() {
return "Students => [" +
"stuId=" + stuId +
", stuName='" + stuName + '\'' +
", stuAge=" + stuAge +
", stuSex=" + stuSex +
", stuBirth=" + stuBirth +
", collections=" + collections +
", teacher=" + teacher +
']';
}
}
结果显示
Hibernate:
select
teacher0_.teacher_id as teacher_1_3_0_,
teacher0_.teacher_name as teacher_2_3_0_,
teacher0_.teacher_sex as teacher_3_3_0_
from
teacher teacher0_
where
teacher0_.teacher_id=?
获取的类:Students => [stuId=3, stuName='张军', stuAge=12, stuSex=1, stuBirth=2018-01-01, collections=Collections => [collId=2, collName='一年级2班'], teacher=Teacher => [teacherId=2, teacherName='李老师', teacherSex=1]]
获取的类:Students => [stuId=3, stuName='张军', stuAge=12, stuSex=1, stuBirth=2018-01-01, collections=Collections => [collId=2, collName='一年级2班'], teacher=Teacher => [teacherId=2, teacherName='李老师', teacherSex=1]]