没有合适的资源?快使用搜索试试~ 我知道了~
JPA的开发手册 1. 发展中的持久化技术 1 1.1 JDBC 1 1.2关系对象映射(Object Relational Mapping,ORM) 2 1.3 Java数据对象(Java Data Object,JDO) 2 1.4 Java Persistence API(JPA) 2 2. JPA体系架构 3 清单1在非Java EE环境使用JPA接口的例子 5 清单2在容器中运行的JPA例子 5 3. Entity Bean 6 3.1定义对Entity中属性变量的访问 6 3.2主键和实体标识(Primary Key and Entity Identity) 8 4. EntityManager 9 4.1配置和获得EntityManager 9 4.2 Entity的生命周期和状态 10 4.3持久化Entity(Persist) 11 4.4获取Entity 13 4.5更新Entity 13 4.6删除Entity 14 4.7脱离/附合(Detach/Merge) 14 5. JPA Query 15 5.1 Query接口 15 5.2简单查询 16 5.3使用参数查询 17 5.4排序(order by) 17 5.5查询部分属性 18 5.6查询中使用构造器(Constructor) 18 5.7聚合查询(Aggregation) 19 5.8关联(join) 20 5.9比较Entity 22 5.10批量更新(Batch Update) 22 5.11批量删除(Batch Remove) 22
资源推荐
资源详情
资源评论
JPA 开发文档
1. 发展中的持久化技术.....................................................................................................................2
1.1 JDBC.....................................................................................................................................2
1.2 关系对象映射(Object Relational Mapping,ORM)......................................................2
1.3 Java 数据对象(Java Data Object,JDO)........................................................................2
1.4 Java Persistence API(JPA)...............................................................................................2
2. JPA 体系架构..................................................................................................................................4
清单 1 在非 Java EE 环境使用 JPA 接口的例子......................................................................5
清单 2 在容器中运行的 JPA 例子.............................................................................................5
3. Entity Bean......................................................................................................................................6
3.1 定义对 Entity 中属性变量的访问.......................................................................................6
3.2 主键和实体标识(Primary Key and Entity Identity)..........................................................8
4. EntityManager...............................................................................................................................10
4.1 配置和获得 EntityManager...............................................................................................10
4.2 Entity 的生命周期和状态..................................................................................................10
4.3 持久化 Entity(Persist).........................................................................................................11
4.4 获取 Entity...........................................................................................................................13
4.5 更新 Entity...........................................................................................................................14
4.6 删除 Entity...........................................................................................................................14
4.7 脱离/附合(Detach/Merge)..................................................................................................15
5. JPA Query......................................................................................................................................16
5.1 Query 接口..........................................................................................................................16
5.2 简单查询.............................................................................................................................17
5.3 使用参数查询.....................................................................................................................17
5.4 排序(order by).....................................................................................................................18
5.5 查询部分属性.....................................................................................................................19
5.6 查询中使用构造器(Constructor).......................................................................................19
5.7 聚合查询(Aggregation)......................................................................................................20
5.8 关联(join)............................................................................................................................21
5.9 比较 Entity...........................................................................................................................23
5.10 批量更新(Batch Update)..................................................................................................23
5.11 批量删除(Batch Remove).................................................................................................23
1. 发展中的持久化技术
1.1 JDBC
很多企业应用的开发者选择使用 JDBC 管理关系型数据库中的数据。JDBC 支持处理
大量的数据,能够保证数据的一致性,支持信息的并发访问,提供 SQL 查询语言查找数据。
JDBC 所使用的关系模型不是为保存对象而设计的,因此迫使开发者选择在处理持久数据
时放弃面向对象编程,或者自己去开发将面向对象特性(比如:类之间的继承)和关系型
数据库进行映射的专有解决方案。
1.2 关系对象映射(Object Relational Mapping,ORM)
ORM 是目前完成对象和关系数据表之间的映射最好的一种技术, 这些 ORM 框架处
理对象和关系数据库之间的协调工作,将开发者从这部分工作中解脱出来,集中精力处理
对象模型。阻碍 ORM 发展的问题是,现有的每一种 ORM 产品都有自己特有的 API,开
发者只能将自己的代码绑定到某一个框架提供商的接口上,这种状况形成了厂商锁定,意
味着一旦该框架提供商无法解决系统中出现的严重错误,或者因为其它的原因转而采用其
它的框架,将会给开发者的企业应用带来极大的困难,唯一的解决办法是重写所有的持久
化代码。
1.3 Java 数据对象(Java Data Object,JDO)
JDO 是 Java EE 标准中另外一个支持管理持久化数据的规范,JDO 规范使用和 JPA
非常类似的 API,只是通常是通过 JCA 技术集成到应用服务器上。但是 JDO 是针对轻量
级容器而设计的,不能够支持容器级别的声明式安全、事务特性,也无法对远程方法调用
提供支持。
1.4 Java Persistence API(JPA)
EJB 3.0 规范由三部分组成:EJB3.0 Simplified API、EJB 核心规范(EJB Core
Contracts and Requirements)和 JPA(Java Persistence API)。JPA 规范部分详细的介
绍了 JPA 中实体 Bean 的定义,并介绍了实体 Bean 支持的注释、全新的查询语言、实体
管理接口、容器实现规范等内容。
JPA 标准制定过程中充分吸收了目前已经出现的所有持久化技术的所有优点,摒弃了
它们存在的局限,使 JPA 在简单易用、查询能力等方面表现突出。
标准化
JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵
循同样的架构,提供相同的访问 API,这保证了基于 JPA 开发的企业应用能够经过少量的
修改就能够在不同的 JPA 框架下运行。
对容器级特性的支持
JPA
框架中支持大数据集、事务、并发等容器级事务,这使得
JPA
超越了简单持久化
框架的局限,在企业应用发挥更大的作用。
简单易用,集成方便
JPA 的主要目标之一就是提供更加简单的编程模型:在 JPA 框架下创建实体和创建
Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity
进行注释;JPA 的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开
发者可以很容易的掌握。JPA 基于非侵入式原则设计,因此可以很容易的和其它框架或者
容器集成。
可媲美 JDBC 的查询能力
JPA 定义了独特的 JPQL(Java Persistence Query Language),JPQL 是 EJB QL
的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,
而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提
供的高级查询特性,甚至还能够支持子查询。
支持面向对象的高级特性
JPA
中能够支持面向对象的高级特性 ,比如类之间的继承、多态和类之间的复杂关系,
这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处
理这些特性在关系数据库的持久化。
支持内容:
JDBC ORM JDO
EJB 3(JPA)
Java 对象
No Yes Yes Yes
高级 OO 原理
No Yes Yes Yes
事务完整性
Yes Yes Yes Yes
并发
Yes Yes Yes Yes
大数据集
Yes Yes Yes Yes
现有 Schema
Yes Yes Yes Yes
关系型和非关系
型数据存储
No No Yes No
查询
Yes Yes Yes Yes
严格的标准/可
移植
No No Yes Yes
简单易用
Yes Yes Yes Yes
表 1 持久化技术的优缺点
2. JPA 体系架构
JPA 中定义一套类和接口用于实现持久化管理和对象/关系的映射,下面这张图中显示了
JPA 的主要组件以及它们之间的相互关系。
图 1 JPA 主要组件和相互关系
EntityManagerFactory
EntityManagerFactory 是 EntityManager 的工厂类,负责创建
EntityManager 对象。
EntityManager
EntityManager 是 JPA 应用中使用的基本对象,通过它提供的相应方法可以管
理持久化对象,也可以新建或者删除持久化对象。EntityManager
还负责创建
Query
实例 。在容器外使用时, EntityManagerFactory
和
EntityManager
之间是一对一的关系。
Entity
EntityTransaction
提供
Entity
操作时需要的事务管理 ,和 EntityManager
是一对一的关系。在查询操作时不需要使用 EntityTransaction,而在对象持
久化、状态更新、对象删除等情况下则必须使用显式的使用
EntityTransaction 的相关方法管理事务。
Query
Query 是查询实体的接口,Query 对象可以从 EntityManager 中获得。根据
EJB 3.0 规范中的描述,Query
接口需要同时支持
JPQL
和原生态
SQL
两种语法。
Persistence
Persistence
是一个工具类,负责根据配置文件提供的参数创建
EntityManagerFactory
对象 。
下面的代码演示了如何通过 JPA 提供的接口和 JPQL 查询语言完成实体查询和更新的
例子,例子中的代码假定运行在非 Java EE 环境中。
清单 1 在非 Java EE 环境使用 JPA 接口的例子
EntityManagerFactory factory = Persistence.createEntityManagerFactory (“mysql”);
//从 EntityManagerFactory 实例 factory 中获取 EntityManager
EntityManager em = factory.createEntityManager(PersistenceContextType.EXTENDED);
//实体的更新需要在事务中运行
EntityTransaction tx = em.getTransaction ();
tx.begin ();
//查找所有公司中的女性雇员
Query query = em.createQuery ("select e from Employee e where e.sex = 'femail'");
List results = query.getResultList ();
//给所有女性雇员增加半天假期
for (Object res : results)
{
Employee emp = (Employee) res;
emp.setHoliday (emp.getHoliday () +0.5);
}
//提交事务(持久化所有更新)
tx.commit ();
em.close ();
factory.close ();
下面的代码显示了在 EJB 容器中开发 JPA 应用时的接口使用情况,由于容器中的
EntityManager 是注入的,事务也是声明式的,因此在容器中完成上面的业务逻辑要简
单得多。
清单 2 在容器中运行的 JPA 例子
/*
剩余22页未读,继续阅读
资源评论
everybody772
- 粉丝: 6
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功