什么是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>