什么是JPA(Java持久性API)?
JPA是Java中用于对象关系映射(ORM)的Java规范。JPA提供了一种将Java对象映射到数据库表的方法。这使程序员可以直接使用Java对象而不是执行数据库SQL查询来操纵数据库信息。
开发人员可以选择许多可用的JPA规范实现库之一,例如Hibernate,ApacheOpenJPA和EclipseLink。EclipseLink是JPA规范的参考实现。在我们将在此网站上为您提供的示例中,Hibernate库将用作持久性提供程序。
在JPA中,我们将数据库表建模为Java对象。此Java对象也称为entity对象。该实体表示数据库中的表。数据库表中的单行将在实体的实例中表示。该实体对象保存有关对象与数据库表之间的映射的信息。可以使用注解或XML映射文件定义此信息或元数据。
这是实体对象及其元数据信息的简单示例。
package org.nhooo.example.jpa.entity;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Objects;
@Entity
@Table(name = "genres")
public class Genre implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String name;
public Genre() {
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
@Column(nullable = false, length = 50)
public String getName() {
return name;
}
public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Genre genre = (Genre) o;
return Objects.equals(id, genre.id) &&
Objects.equals(name, genre.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
@Override
public String toString() {
return "Genre{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}在该样品中实体上面我们使用注解如@Entity,@Table,@Id,@GeneratedValue和@Column。这些是可以用于对象映射的注解。
除了使用对象操作数据库表外,JPA还提供类似于SQL的查询,可用于创建静态或动态查询语句。
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>