学习目标
数据访问(Data Access)在Java Persistence API(JPA)中是一个核心概念,它允许你以面向对象的方式访问和操作数据库。JPA是Java EE 5规范的一部分,并在后续版本中得到了增强,如今它是许多Java应用程序中处理数据库交互的首选方式之一。JPA提供了一套标准API,用于数据持久化,而具体的实现则依赖于JPA提供者(如Hibernate, EclipseLink等)。
JPA的基本概念
- 实体(Entity):
在JPA中,实体是持久化类的实例,它代表了数据库中的一行记录。实体类通过注解(如@Entity)标识,并且拥有映射到数据库表列的属性。 - 实体管理器(EntityManager):
EntityManager是JPA中用于管理实体的接口。它提供了用于创建、查询、更新和删除实体的方法。EntityManager是线程绑定的,每个线程都应该有自己的EntityManager实例。 - 持久化上下文(Persistence Context):
持久化上下文是EntityManager管理的一组实体实例。它代表了当前事务的工作单元,并且包含了实体的当前状态。当事务提交时,持久化上下文中的更改将被同步到数据库。 - 实体事务(Entity Transactions):
JPA支持事务管理,允许你以声明式或编程式方式控制事务的边界。事务是确保数据库操作完整性和一致性的关键。 - JPQL(Java Persistence Query Language):
JPQL是一种用于查询实体的高级查询语言。它类似于SQL,但操作的是实体和实体之间的关系,而不是数据库表和列。 - Criteria API:
Criteria API是JPA 2.0引入的一种类型安全的查询API,它允许你以编程方式构建查询,而无需编写字符串形式的JPQL或SQL查询。
JPA的数据访问流程 - 配置JPA提供者:
在你的项目中配置JPA提供者(如Hibernate),这通常包括在pom.xml(对于Maven项目)中添加依赖项,以及配置persistence.xml文件。 - 定义实体类:
使用JPA注解定义实体类,映射到数据库表。 - 使用EntityManager:
获取EntityManager实例,并通过它来执行CRUD(创建、读取、更新、删除)操作。 - 查询数据:
使用JPQL或Criteria API编写查询,并通过EntityManager执行这些查询来获取实体实例。 - 管理事务:
控制事务的边界,确保数据的一致性和完整性。 - 关闭EntityManager:
在操作完成后,关闭EntityManager以释放资源。
java
java
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JpaExample {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("your-persistence-unit");
EntityManager em = emf.createEntityManager();
// 开始事务
em.getTransaction().begin();
// 这里可以添加代码来操作实体
// 提交事务
em.getTransaction().commit();
// 关闭EntityManager
em.close();
emf.close();
}
}
注意:在实际应用中,通常会使用Spring Data JPA等框架来简化JPA的使用,这些框架提供了更高级的抽象,如Repository接口,可以进一步简化数据访问层的代码。
还待完善,