1. JPA相关概念
1.1 JPA概述
全称是:Java Persistence API。是SUN公司推出的一套基于ORM的规范。Hibernate框架中提供了JPA的实现。
JPA通过JDK 5.0注解或XML描述对象—关系表的映射关系,并将运行期的实体对象持久化到数据库中。
1.2 JPA的优势
标准化
JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
容器级特性的支持
JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。
简单方便
JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。
查询能力
JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
高级特性
JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。
1.3 学习JPA要明确的
- JPA是一套ORM规范,Hibernate实现了JPA规范
- hibernate中有自己的独立ORM操作数据库方式,也有JPA规范实现的操作数据库方式。
2. JPA入门
2.1 需求介绍
本章节我们实现基于JPA注解的对象关系映射,配置实体类和数据库表的对应关系。并且使用JPA规范中的方法实现CRUD操作。
2.2 JPA环境搭建
2.2.1 第一步:拷贝jar包
2.2.2 第二步:创建配置文件
在src下面的META-INF文件夹下面创建一个名称为persistence.xml的文件。
1 | <?xml version="1.0" encoding="UTF-8"?> |
2.2.3 第三步:编写工具类,用于获取JPA的操作数据库对象
1 | /** |
2.2.4 第四步:编写实体类并使用注解配置
1 | /** |
2.3 JPA的CRUD操作
2.3.1 保存
1 | /** |
2.3.2 快照更新
1 | /** |
2.3.3 merge更新
1 | /** |
2.3.4 删除
1 | /** |
2.3.5 查询一个
1 | /** |
2.3.6 查询所有
1 | /** |
3. JPA的多表操作
3.1 一对多关系配置及操作
3.1.1 配置
1 | /** |
1 | /** |
3.1.2 操作
3.1.2.1 保存
1 | /** |
3.1.2.2 更新
1 | /** |
3.1.2.3 删除
1 | /** |
3.1.2.4 查询
1 | /** |
3.2 多对多关系配置及操作
3.2.1 配置
1 | /** |
1 | /** |
3.2.2 操作
3.2.2.1 保存
1 | /** |
3.2.2.2 删除
1 | /** |
4. JPA的其他说明
4.1 JPA中使用C3P0连接池
4.1.1 第一步:拷贝C3P0所必须的3个jar包
4.1.2 第二步:在persistence.xml配置文件中配置
1 | <!-- 配置使用C3P0数据源 --> |
4.1.3 验证是否配置成功
1 | /** |
1 |
|
4.2 JPA与Hibernate中操作数据的方法对照
5. Hibernate中使用JPA注解映射配置
5.1 编写主配置文件(hibernate.cfg.xml)
1 | <?xml version="1.0" encoding="UTF-8" ?> |
5.2 编写实体类并使用JPA注解配置
1 | /** |
5.2 操作
5.2.1 保存
1 | /** |
5.2.2 查询
1 | /** |
5.2.3 修改
1 | /** |
5.2.4 删除
1 | /** |
-------------本文结束感谢您的阅读-------------
本文标题: Hibernate(四)
本文链接: https://wgy1993.gitee.io/archives/c4c4045f.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)