最近学习了JPA,涉及的知识点很多,主要把自己理解的一些重点及难点总结下,主要内容如下:
- JPA核心概念
- JPA实体的状态变化
- JPA实战
一、JPA核心概念
1. JPA相关知识概述
1. 1 什么是数据持久化?
程序(内存)中的数据以某种形式保存到存储介质中,比如文件,数据库等,以达到持久化,避免数据丢失的目的。如图:
![](http://dl.iteye.com/upload/attachment/0067/4448/8e62b16e-1cd6-34f4-bedf-0277d0ad4c6a.jpg)
![](/admin/blogs/1507485/5fe93610-d1af-46ec-9616-deb4339c8066_0_files/5140281.jpg)
1.2 持久化技术
序列化: java内置的持久化对象的机制,以二进制字节码的形式写到硬盘文件中
JDBC: 把数据保存到关系型数据库,不支持对象数据
对象关系映射ORM: 把java对象映射到关系型数据库
JAVA数据对象JDO: java对象持久化规范,基于对象数据库ODB(直接保存java对象)
EJB( EJB2.x
)中的实体bean: 管理持久化数据的组件框架
1)JPA 与其他持久化技术的比较
|
序列化
|
JDBC
|
ORM
|
JDO(
ODB)
|
JPA
|
持久化 Java 对象
|
是
|
否
|
是
|
是
|
是
|
具备面向对象特征
|
是
|
否
|
是
|
是
|
是
|
事务完整性
|
否
|
是
|
是
|
是
|
是
|
并发性
|
否
|
是
|
是
|
是
|
是
|
大数据集
|
否
|
是
|
是
|
是
|
是
|
对现有的关系数据库数据的支持
|
否
|
是
|
是
|
否
|
是
|
数据查询
|
否
|
是
|
是
|
是
|
是
|
严格标准 / 可移植性
|
是
|
否
|
否
|
否
|
是
|
2)EJB与JPA的关系
EJB 2.X 中,
实体bean就是用来管理持久化数据的组件框架
,但
最大的缺点是规定了太过于严格的标准
,使得开发复杂。
EJB
3中的实体
Bean
(
Entity Bean
)逐渐使用新的规范
JPA
替代。并且
JPA
不仅能在
EJB
环境中使用,也能在
J2SE
的环境中使用,相对于
EJB 2.X
中的实体
Bean
,使用的范围更光阔。
如图
所示,清楚的表明了
EJB3
与
JPA
的关系。
![](http://dl.iteye.com/upload/attachment/0067/4444/9cc0d741-605a-3f25-be4a-790977b1abcd.jpg)
![](/admin/blogs/1507485/5fe93610-d1af-46ec-9616-deb4339c8066_0_files/5584546.jpg)
1.3 什么是JPA?
全称是 Java Persistence API,
主要是解决各种ORM框架的差异,而由SUN在J2EE5规范中提出的Java对象持久化规范。
JPA 吸取了目前 Java 持久化技术的优点,规范、简化了 Java 对象的持久化工作。核心
包含一套接口,但没有提供实现,目前已有Hibernate,OpenJPA,TopLink等框架实现了JPA规范。
![](http://dl.iteye.com/upload/attachment/0067/4446/458d537a-8f2a-3a9a-8d63-1c95beab2e9d.jpg)
![](/admin/blogs/1507485/5fe93610-d1af-46ec-9616-deb4339c8066_0_files/5380968.jpg)
2. 理解 实体 实体管理器 持久化上下文 事务管理
![](http://dl.iteye.com/upload/attachment/0067/4468/9db2b378-7369-318b-961e-0d96061aa0a7.png)
二、JPA实体的状态变化(待续)
三、JPA实战(待续)
3.1 J2SE
3.2 J2EE
【学习资料】