📜  jpa 映射 - Java (1)

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

JPA 映射 - Java

JPA (Java Persistence API) 是一套用于管理 Java 应用程序中的对象-关系映射(ORM)关系的技术。它定义了一种标准 API 来管理对象的持久化和存储,并将这些对象映射到数据库中的表。作为一种 ORM 框架,JPA 可以让开发人员更加方便地操作数据库,开发效率和代码质量都能得到提升。

JPA 实体

在 JPA 中,实体是用来映射数据库表的 Java 对象。实体通常对应于数据库表的行,其属性对应于表中的列。通过注解来标记实体属性与表中的列对应关系。

以下是一个简单的实体类示例:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    // getters and setters
}

在这个示例中,@Entity 注解指示了这是一个 JPA 实体类,@Table(name = "users") 注解指示了这个实体对应的数据库表名为 "users"。@Id、@GeneratedValue 和 @Column 注解则分别表示了该实体的主键及其对应的数据库列名和数据类型。

JPA 持久化上下文

JPA 持久化上下文是一个用于管理实体对象的容器。它允许我们将实体对象持久化到数据库,并提供了 CRUD 操作的 API。

以下是一个示例代码片段,展示了 JPA 持久化上下文是如何使用的:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myapp");
EntityManager entityManager = entityManagerFactory.createEntityManager();

entityManager.getTransaction().begin();

User user = new User();
user.setName("John Doe");
user.setAge(30);

entityManager.persist(user);

entityManager.getTransaction().commit();

entityManager.close();
entityManagerFactory.close();

在这个示例中,我们通过调用 EntityManagerFactory 的 createEntityManager() 方法来创建了一个 EntityManager 实例。之后,使用事务管理器进行事务的开启、提交和回滚操作。在事务中,我们创建了一个新的 User 对象并使用 entityManager.persist() 方法将其保存到数据库中。

JPA 查询

JPA 提供了丰富的查询功能,可以使用 HQL(Hibernate Query Language)或者 JPQL(JPA Query Language)来进行查询。

以下是一个 JPQL 查询的示例:

TypedQuery<User> query = entityManager.createQuery(
    "SELECT u FROM User u WHERE u.name LIKE :name",
    User.class
);
query.setParameter("name", "%John%");

List<User> results = query.getResultList();

在这个示例中,我们使用了 JPQL 查询语句来查询所有名字中包含 "John" 的 User 对象,并使用 TypedQuery 来指定返回的结果类型。我们使用了 setParameter() 方法来设置查询参数,并使用 getResultList() 方法来执行查询并返回结果列表。

JPA 映射总结

JPA 映射是一种用于管理 Java 应用程序中的对象关系映射的技术。它将实体映射到数据库表中,并提供了 CRUD 操作的 API 和丰富的查询功能。使用 JPA,我们可以更加方便地操作数据库,提高开发效率和代码质量。