📜  JPA教程(1)

📅  最后修改于: 2023-12-03 15:32:07.906000             🧑  作者: Mango

JPA教程

Java Persistence API (JPA) 是 Java 平台中处理关系型数据的标准规范。它提供了一个简单易用的 API 来连接和操作数据库,从而简化了开发者的工作负担。本教程将帮助您快速入门 JPA,包括如何使用 JPA 进行持久化操作,如何使用 JPA 的查询 API 进行数据检索和如何使用 JPA 进行关系映射。

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

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
}

上面的代码中,我们定义了两个实体类 OrderCustomer,并通过 @ManyToOne@OneToMany 注解将它们之间的关系映射到数据库表中。

结论

本教程介绍了 JPA 的基本用法,包括 JPA 持久化操作、JPA 查询 API 和关系映射。希望这个教程能够帮助您快速入门 JPA。