JPA基础知识

转载自:http://www.cnblogs.com/holbrook/archive/2012/12/30/2839842.html

一,概述
JPA(Java Persistence API,Java持久化API)
JPA维护一个Persistence Context(持久化上下文),在持久化上下文中维护实体的生命周期。主要包含三个方面的内容:
ORM元数据。JPA支持annotion或xml两种形式描述对象-关系映射。
实体操作API。实现对实体对象的CRUD操作。
查询语言。约定了面向对象的查询语言JPQL(Java Persistence Query Language)。
[img]http://dl2.iteye.com/upload/attachment/0127/0554/16549122-68de-32e6-a959-2ffff549f30f.png[/img]

与Hibernate的比较
JPA的主要API都定义在javax.persistence包中。如果你熟悉Hibernate,可以很容易做出对应:
org.hibernate javax.persistence 说明
cfg.Configuration Persistence 读取配置信息
SessionFactory EntityManagerFactory 用于创建会话/实体管理器的工厂类
Session EntityManager 提供实体操作API,管理事务,创建查询
Transaction EntityTransaction 管理事务
Query Query 执行查询
[img]http://dl2.iteye.com/upload/attachment/0127/0556/7fa43436-eb42-3010-86c2-76a941c6b2cb.png[/img]

二,实体生命周期
实体生命周期是JPA中非常重要的概念,描述了实体对象从创建到受控、从删除到游离的状态变换。对实体的操作主要就是改变实体的状态。
[img]http://dl2.iteye.com/upload/attachment/0127/0558/ddacadb6-6c30-3504-8efb-e030b1054ead.png[/img]
状态:
New,新创建的实体对象,没有主键(identity)值
Managed,对象处于Persistence Context(持久化上下文)中,被EntityManager管理
Detached,对象已经游离到Persistence Context之外,进入Application Domain
Removed, 实体对象被删除

EntityManager提供一系列的方法管理实体对象的生命周期,包括:
persist, 将新创建的或已删除的实体转变为Managed状态,数据存入数据库。
remove,删除受控实体
merge,将游离实体转变为Managed状态,数据存入数据库。

如果使用了事务管理,则事务的commit/rollback也会改变实体的状态。

三,实体关系映射(ORM)
3.1 基本映射
对象端 数据库端 annotion 可选annotion
Class Table @Entity @Table(name="tablename")
property column – @Column(name = "columnname")
property primary key @Id @GeneratedValue(strategy = GenerationType.XXX) 详见ID生成策略
property NONE @Transient

3.2 ID生成策略
ID对应数据库表的主键,是保证唯一性的重要属性。JPA提供了以下几种ID生成策略
GeneratorType.AUTO ,由JPA自动生成
GenerationType.IDENTITY,使用数据库的自增长字段,需要数据库的支持(如SQL Server、MySQL、DB2、Derby等)
GenerationType.SEQUENCE,使用数据库的序列号,需要数据库的支持(如Oracle)
GenerationType.TABLE,使用指定的数据库表记录ID的增长
需要定义一个TableGenerator:
@TableGenerator( name="myGenerator", table="GENERATORTABLE", pkColumnName = "ENTITYNAME", pkColumnValue="MyEntity", valueColumnName = "PKVALUE", allocationSize=1 )
在@GeneratedValue中引用即可
@GeneratedValue(strategy = GenerationType.TABLE,generator="myGenerator")

3.3 关联关系
JPA定义了one-to-one、one-to-many、many-to-one、many-to-many 4种关系。
对于数据库来说,通常在一个表中记录对另一个表的外键;
对应到实体对象,持有关联数据的一方称为owning-side,另一方称为inverse-side。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值