📅  最后修改于: 2023-12-03 15:32:07.906000             🧑  作者: Mango
Java Persistence API (JPA) 是 Java 平台中处理关系型数据的标准规范。它提供了一个简单易用的 API 来连接和操作数据库,从而简化了开发者的工作负担。本教程将帮助您快速入门 JPA,包括如何使用 JPA 进行持久化操作,如何使用 JPA 的查询 API 进行数据检索和如何使用 JPA 进行关系映射。
JPA 提供了一种简单的持久化实体对象的方式。它允许将实体类映射到数据库表中,并提供了一组 API 来对这些实体对象进行 CRUD 操作。下面是一个简单的 JPA 持久化示例:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
}
上面的代码中,我们用 @Entity
注解将 User
类标记为一个 JPA 实体,用 @Table
注解将这个实体映射到 user
数据库表。实体类中的 id
属性用 @Id
注解标记为实体的主键,@GeneratedValue
注解指定主键生成策略为自增长。
下面是一个简单的 JPA 持久化操作例子:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
User user = new User();
user.setName("张三");
user.setEmail("zhangsan@example.com");
em.persist(user);
tx.commit();
em.close();
emf.close();
上面的代码中,我们先通过 Persistence.createEntityManagerFactory
方法创建一个实体管理器工厂,然后通过 emf.createEntityManager
方法创建一个实体管理器。接着,我们开启一个事务,创建一个 User
对象,并通过 em.persist
方法将其持久化到数据库中,最后提交事务并关闭实体管理器。这样就完成了一个简单的 JPA 持久化操作。
JPA 提供了一些查询 API 来检索实体对象。这些 API 极大地简化了数据检索的过程。下面是一个简单的 JPA 查询 API 例子:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");
EntityManager em = emf.createEntityManager();
TypedQuery<User> query = em.createQuery("SELECT u FROM User u WHERE u.name = '张三'", User.class);
List<User> users = query.getResultList();
em.close();
emf.close();
上面的代码中,我们通过 em.createQuery
方法创建了一个 JPA 查询,检索名字为 “张三” 的用户列表。最后通过 query.getResultList
方法获得结果。
JPA 还提供了一种简单的方式来进行关系映射。它允许我们将实体对象之间的关系映射到数据库中,从而实现表之间的关联。下面是一个简单的 JPA 关系映射示例:
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String orderNumber;
@ManyToOne
private Customer customer;
// getters and setters
}
@Entity
@Table(name = "customers")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
@OneToMany(mappedBy = "customer")
private Set<Order> orders = new HashSet<>();
// getters and setters
}
上面的代码中,我们定义了两个实体类 Order
和 Customer
,并通过 @ManyToOne
和 @OneToMany
注解将它们之间的关系映射到数据库表中。
本教程介绍了 JPA 的基本用法,包括 JPA 持久化操作、JPA 查询 API 和关系映射。希望这个教程能够帮助您快速入门 JPA。