什么是JPA
JPA只是一个规范,意味着没有实现。您可以根据需要使用JPA批注对类进行批注,但是如果没有实现,将不会发生任何事情。将JPA视为必须遵循的准则或接口,而Hibernate的JPA实现是符合JPA规范定义的API并提供幕后功能的代码。
当将Hibernate与JPA一起使用时,实际上是在使用Hibernate JPA实现。
JPA is the dance, Hibernate is the dancer
使用JPA
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
我有一个类Student
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
public Student(){}
public Student(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity 注解表示这是个实体类
@Table(name = “student”) 表示这个类对应的表名是 student
@Id 表明主键
@GeneratedValue(strategy = GenerationType.IDENTITY) 表明它自增长
@Column(name = “id”) 表明对应的数据库字段名
类Student对应的Mapper接口:StudentMapper:
public interface StudentMapper extends JpaRepository<Student,Integer> {
}
继承了JpaRepository,并且提供泛型<Student,Integer> 表示这个是针对Student类的Mapper接口,Integer表示主键是Integer类型。
JpaRepository 这个父接口,就提供了CRUD, 分页等等一系列的操作,直接拿来用,不需要二次开发的了。
Controller直接拿来用
List<Student> list = studentMapper.findAll();