JPA学习笔记(高手笔记录)
JPA(Java Persistence API)是Java平台上的一个规范,用于管理和持久化Java对象到数据库。它为开发人员提供了一种ORM(Object-Relational Mapping)机制,使得在Java应用中操作数据库变得更加简单。JPA通过元数据定义了对象与数据库表之间的映射关系,元数据可以是XML文件或者JDK 5.0以上的注解形式。 1.1 JPA基础 JPA的核心概念包括实体(Entity)、实体管理器(EntityManager)和实体工厂(EntityManagerFactory)。实体是JPA中的核心概念,代表数据库中的表,通常使用`@Entity`注解标识。一个实体必须有一个无参构造函数,并且其类和字段不应声明为`final`,以确保实例化和序列化的需求。实体的状态有三种:瞬时态(Transient)、持久态(Persistent)和游离态(Detached),这些状态影响着实体与数据库的交互方式。 1.2 JPA开发过程 开发过程中,首先需要创建实体类并进行注解配置,然后通过实体工厂创建实体管理器,使用实体管理器来管理实体的生命周期。常见的操作包括:保存(persist)、删除(remove)、加载(find)和更新(merge)等。 1.3 实体的生命周期及实体管理器常用方法 - 瞬时态:新创建的对象,未与任何实体管理器关联。 - 持久态:已与实体管理器关联,其变化将被跟踪并同步到数据库。 - 游离态:曾经是持久态,但当前实体管理器不再管理它,对象可能已经从数据库中加载,也可能从未保存过。 实体管理器常用方法: - `EntityManager.persist(entity)`: 将瞬时态对象转换为持久态,插入数据库。 - `EntityManager.remove(entity)`: 删除持久态对象,从数据库中移除。 - `EntityManager.find(Class<T> entityClass, Object primaryKey)`: 加载指定主键的实体,返回持久态对象。 - `EntityManager.merge(entity)`: 将游离态对象转换为持久态,同步对象的最新状态到数据库。 2. 环境搭建 在项目中使用JPA,需要添加相应的依赖,如Spring Data JPA,以及JPA供应商,如Hibernate。配置文件中要指定数据源、实体扫描路径、JPA属性等。通过测试类验证配置是否正确。 3. 常用注解 JPA提供了丰富的注解,用于映射实体属性、主键生成策略、关联关系等。例如: - `@Id`:标识实体的主键字段。 - `@GeneratedValue(strategy=GenerationType.IDENTITY)`:定义主键生成策略,如自增策略。 - `@OneToOne`, `@OneToMany`, `@ManyToOne`, `@ManyToMany`:分别表示一对一、一对多、多对一、多对多关联关系。 - `@JoinColumn` 和 `@JoinTable`:用于配置关联关系的外键或中间表。 4. JPA映射 JPA映射主要涉及实体间的关系映射,如一对一、一对多、多对多和继承映射。一对一映射可以通过共享主键或外键实现;一对多和多对一关联可以是字段级别或表级别,通过`@OneToMany`和`@ManyToOne`注解;多对多关联通常需要中间表,使用`@ManyToMany`和`@JoinTable`。 5. JPQL JPQL(Java Persistence Query Language)是JPA的查询语言,类似SQL,但面向对象。它可以用来查询、更新和删除实体,支持复杂的查询表达式和聚合函数。 6. 常见异常 在JPA开发过程中,可能会遇到如实体不存在、并发控制问题、数据一致性异常等错误。理解这些异常的含义并妥善处理是成功使用JPA的关键。 总结,JPA作为Java的持久化框架,简化了数据库操作,通过注解和元数据实现了对象与数据库的映射。了解和掌握JPA的基础知识、环境搭建、注解使用、关系映射以及查询语言,能有效提高Java应用的数据库管理效率。同时,理解并处理好可能出现的异常,能够确保应用程序的稳定运行。
剩余23页未读,继续阅读
- capf0252012-08-11里面好像有的是hibernate自带的注解吧,比如ID生成策列!!
- 粉丝: 53
- 资源: 812
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助