1. Entity
Entity是JPA的主体,它主要有以下几个特点
a) 普通POJO对象,在bean里使用new来创建
b) 无需接口的引用
c) 有一个持久化主键(IDENTITY)
d) 会同时包含持久化和非持久化状态(@Transient)
e) 可以是其他Entity或普通类的子类
f) 必须实现Serializable
Entity ID有如下特点,
a) 是数据库的主键
b) @Id 注解单个域,@GeneratedValue,注解自动生成的主键,可以使用GenerationType=SEQUENCE, TABLE, IDENTITY,AUTO 4种方式。
c) @EmbeddedId注解单个域,@IdClass 表示多个Id域,这两种注解都是用来表示复合主键的,在实现的时候必须实现hashCode和equals方法。并且@IdClass的特点是这两个域里的主键名和类型必须和主Entity里的主键名,类型一致。比如,
public class EmployeePK implements Serializable{
private Integer id;
private String name;
...
}
@Entity
@IdClass(EmployeePK.class)
public class Employee implements Serializable{
@Id
private Integer id;
@Id
private String name;
}
这两个用法主要的区别在于如果还想对Id有Join或GeneratedValue等更细节的具体操作的时候就必须使用IdClass了
d) 必须在Entity的顶级,或是父类里。
Entity的声明周期和操作如下,
persist() 向数据库里插入Entity
remove() 移除数据库里的Entity
merge() 同步已经detached的Entity的状态
refresh() 重新加载Entity的状态
2. Relation
JPA支持单向和双向的关系,关系包括
One to One
a) 声明fetch=LAZY
b) configure nullable = false
One to Many
是ManyToOne的反向关系,一般用mappedBy实现,这样可以不建中间关系表
a) 声明fetch=EAGER
Many to One
a) 声明fetch=LAZY
Many to Many
a) 声明fetch=EAGER
b) @JoinColumn(name = "PERSON_ID", referencedColumnName = "PERSON_ID") colun name 是本表中的字段,referencedColumnName是对方表中的对应字段名
mappedBy指得是如果在某一个POJO里声明了关系,使用JoinColumn之后在其相对应的POJO里只用声明mappedBy并指定其对应POJO里的变量名就可以完成双向关系。
级联的关系也使用在JPA的操作中,级联关系有PERSIST,REMOVE,MERGE,REFRESH,DETACH,ALL.
@OrderBy 可以使用在@OneToMany或@ManyToOne上来指定不通的顺序
@OrderBy("lastname ASC, age DESC");
3. Inheritance
文章很多,主要是表继承
http://hi.baidu.com/xerophyte000/blog/item/32c7887abed441350dd7da5e.html
http://blog.csdn.net/amos1989/article/details/5407082
4. Eclipselink/Toplink特性
a) EntityListener这个不同于JPA的EntityListener,使用的时候可以获得更多的信息和操作。比如:
Pet pet = (Pet)clientSession.readObject(Pet.class);
UnitOfWork uow = clientSession.getActiveUnitOfWork();
if (uow == null) {
uow = clientSession.acquireUnitOfWork(); // Start external transaction
shouldCommit = true;
}
Pet petClone = (Pet) uow.registerObject(pet);
petClone.setName("Furry");
if (shouldCommit) {
uow.commit(); // Ask external transaction controller to commit
}
UnitOfWork 是Session的子类它的解释为
<li> Allow parallel transactions against a session's objects.
<li> Allow nested transactions.
<li> Not require the application to write objects that is changes, automatically determine what has changed.
<li> Perform a minimal commit/update of all changes that occurred.
<li> Resolve foreign keys for newly created objects and maintain referential integrity.
<li> Allow for the object transaction to use its own object space.
其中registerObjects可以将额外的对象关联到现有的事务中提交。
getActiveUnitOfWork()方法返回的是External JTS transaction。 JTS的解释为
Java Transaction Service (JTS) specifies the implementation of a transaction manager that supports the Java Transaction API (JTA) specification (see JSR 907) at the high level and implements the Java mapping of the OMG Object Transaction Service (OTS) specification at the low level. JTS uses the standard CORBA ORB/TS interfaces and Internet Inter-ORB Protocol (IIOP) for transaction context propagation between JTS transaction managers.
A JTS transaction manager provides transaction services to the parties involved in distributed transactions: the application server, the resource manager, the standalone transactional application, and the Communication Resource Manager
也就是说必须在JTA环境下才可以获得,否则为NULL。
当然也可以用acquireUnitOfWork()来创建一个External Transaction,其流程图为
- 大小: 18.3 KB
- 大小: 22.6 KB
分享到:
相关推荐
jpa jpa规范 jpa源码 jpa jpa规范 jpa源码
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将...尚硅谷jpa学习路线图思维导图,涵盖了jpa框架从基础知识到高级应用的内容,帮助大家尽快掌握jpa开发。
JPA入门学习笔记,包含实体表的关联映射
JPA包括以下3方面的技术: RM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; JPA 的API,用来操作实体对象,执行CRUD操作,框架...
JPA 规范部分详细的介绍了 JPA 中实体 Bean 的定义,并介绍了实体 Bean 支持的注释、全新的查询语言、实体管理接口、容器实现规范等内容。 JPA 标准制定过程中充分吸收了目前已经出现的所有持久化技术的所有优点,...
JPA JPA学习资料 JPA学习资料与例子,希望对你有帮助
jpa 全面学习资料 入门 实战 示例 jpa开发手册 JPA_全面讲解 JPA使用入门_基础 JPA学习笔记 JPA注解 JPA简介
传智播客——JPA学习笔记 网络上有一份pdf格式的《JPA学习笔记》,但是内容排版有点乱,而且有缺失的部分,小弟从原来的blog处拷贝出来,并加以排版,制作成了chm格式的,大家应该知道chm格式比较适合作为参考资料或...
JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射
JPA学习笔记
1.JPA概述 JPA(Java Persistence API)作为 Java EE 5.0 平台标准的 ORM 规范,将得到所有 Java EE 服务器的支持。Sun 这次吸取了之前 EJB 规范惨痛失败的经历,在充分吸收现 有 ORM 框架的基础上,得到了一个易于...
Spring Data JPA学习以及配置步骤
综合多家视频,超全面综合笔记!Spring Data Jpa 学习
jpa学习总结,pdf类型的,详细介绍了jpa的应用,对了解jpa的入门有一定的指导作用的,本资源下载源于传智播客的视频课程。
在学习JPA的过程中将JPA的核心的内容整理了一下做成一份JPA学习笔记希望能够帮助到其他正在学习或者将要学习JPA的朋友。
java jee技术,jpa的使用接受学习笔记。
这里面的太贵了,来个免费的. 这是一个很不错的笔记哦
JPA学习笔记-EJB-06JPA+Spring使用经验。
jpa入门级教程,有jpa基础,环境搭建,常用注解,jpa映射,以及jpql介绍和常见异常.
JPA学习教程,多个文件,是学习JPA非常好的书箱。