### 尚硅谷 JPA 教程知识点概览
#### 一、JPA 概述
- **定义**:Java Persistence API (JPA) 是 Java 平台标准的一部分,旨在为 Java 应用程序提供对象持久化的功能。它是一种 ORM (Object-Relational Mapping) 规范,用于将 Java 对象映射到关系型数据库中的记录。
- **发展历程**:JPA 首次出现在 Java EE 5.0 版本中,旨在简化企业级应用的数据持久化过程。
- **目标**:提供一套统一的标准接口,让开发人员能够以一致的方式访问持久层,从而提高应用程序的可移植性和可维护性。
#### 二、JPA 与 Hibernate 的关系
- **JPA 是规范**:JPA 定义了一组接口和规则,但并不提供具体的实现细节。这些接口和规则需要由第三方库来实现。
- **Hibernate 是实现**:Hibernate 不仅是一个 ORM 框架,也是 JPA 规范的一个实现。从 Hibernate 3.2 版本开始,它就开始支持 JPA。
- **JPA 实现者**:除了 Hibernate 外,还有其他几个实现 JPA 的工具,例如 TopLink 和 OpenJPA。
#### 三、JPA 的优势
- **标准化**:由于 JPA 提供了统一的 API,这意味着基于 JPA 开发的应用可以在不同的 JPA 实现之间轻松迁移,只需少量的代码调整。
- **简单易用**:JPA 设计时考虑到了易用性,创建实体类非常直观且简单,只需要使用 `javax.persistence.Entity` 注解即可。
- **强大的查询能力**:JPA 支持 JPQL (Java Persistence Query Language),这是一种面向对象的查询语言,支持 SQL 中常见的复杂查询功能。
- **支持面向对象的高级特性**:JPA 支持诸如类继承、多态和复杂关系等面向对象的特性。
#### 四、JPA 技术要点
- **ORM 映射元数据**:可以通过 XML 或 JDK 5.0 注解来定义对象和数据库表之间的映射关系。
- **JPA 的 API**:提供了操作实体对象的方法,包括 CRUD (Create, Retrieve, Update, Delete) 操作。
- **查询语言**:JPQL 是 JPA 的一部分,用于执行数据查询,使得查询操作更符合面向对象的思维模式。
#### 五、JPA HelloWorld 示例
- **创建 persistence.xml**:这是一个配置文件,用于指定 JPA 使用的持久化单元、数据库连接信息、ORM 框架实现等。
- **定义实体类**:实体类代表数据库中的表,通过注解如 `@Entity` 和 `@Table` 来描述类和表之间的映射关系。
- **使用 JPA API 进行数据操作**:通过 `EntityManager` 接口来执行增删改查等操作。
- **JAR 文件依赖**:需要添加 Hibernate 和数据库驱动的 JAR 包至项目中。
- **persistence.xml 配置**:指定持久化单元的名称、事务类型 (`RESOURCE_LOCAL` 或 `JTA`) 以及 ORM 框架实现。
- **JPA 基本注解**:
- `@Entity`:标记类为实体类。
- `@Table`:指定实体类映射的数据库表。
- `@Id`:标记主键字段。
- `@GeneratedValue`:指定主键的生成策略。
- `@Column`:指定列名及属性。
- `@Basic`:表示一个基本属性。
- `@Transient`:标记非持久化属性。
- `@Temporal`:用于指定日期/时间字段的存储方式。
#### 六、总结
JPA 作为一种标准化的 ORM 规范,极大地简化了 Java 应用程序的数据持久化过程。通过 JPA,开发人员可以专注于业务逻辑而不用担心底层数据库的细节。同时,由于 JPA 的高度灵活性和可移植性,它可以被广泛应用于各种规模的项目中。无论是初学者还是经验丰富的开发者,都能从中获益良多。