What
ORM: Object Relational Mapping,描述数据对象和数据库的映射关系(eg, Hibernate)。
JPA: Java Persistence API,是一种规范。
Spring Data JPA:在JPA规范下提供了repository实现,但是使用哪种ORM(Hibernate……)框架是由自己决定。ORM也是基于JPA规范的,但是不同ORM不同实现,使用Spring Data JAP就可以灵活切换。
JPQL: 面向对象而非面向数据库的查询语言,避免代码与SQL语言耦合太紧密。
How
1.在pom.xml中添加依赖
spring-boot-starter-data-jpa包含spring-data-jpa、spring-orm和hibernate来支持JPA。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2.在application中添加DataSource、Jpa配置
#数据库连接信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:172.17.0.1}:3306/test?useSSL=false
spring.datasource.username=root
spring.datasource.password=root
#操作数据库时显示sql语句
spring.jpa.show-sql=true
#hibernate配置属性,第一次加载hibernate的时候建表,后续重新加载hibernate的时候再更新表结构,但是表结构更新了还是保留以前表里的记录
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
3.创建实体
创建实体通过ORM框架会映射在数据库中,可以通过@Table来定义对应的数据库表名@Column定义列明,否则按默认规则(驼峰命名改成下划线同时转换为小写)。
@Entity
#包含getter、setter
@Data
#默认表明就是entity_user
public class EntityUser {
@Id
private String id;
private String name;
}
4.创建数据访问接口
定义接口继承自JpaRepository,用IDEA会自动联想出JPA已经支持的JSQL接口。
public interface EntityUserRepository extends JpaRepository {
EntityUser findByName(String name);
}