什么是JPA
JAP(Java Presistance API) 是用于Java EE 和 Java SE 环境中的持久化,以及对象/关系映射(ORM)的Java API
JPA 的实现:Hibernate、EclipseLink、Apache OpenJPA ...
JPA 核心概念
实体
- 实体表示关系数据库中的表
- 每个实体实例对应于该表的行
- 类必须用
javax.persistence.Entity
注解 - 类必须有一个
public
或protected
的无参的构造函数 - 实体实例被当中值以分离对象方式进行传递(例如通过会话bean的远程业务接口),则该类必须实现Serializable接口
- 唯一的对象标识符:简单主键(
javax.persistence.Id
)、复合主键(javax.persistence.EmbeddedId
和javax.persistence.IdClass
)
关系
- 一对一:
@OneToOne
- 一对多:
@OneToMany
- 多对一:
@ManyToOne
- 多对多:
@ManyToMany
EntityManager:管理实体的类(接口)
EntityManager 接口
- 定义用于持久性上下文进行交互的方法
- 创建和删除持久实体实例,通过实体主键查找实体
- 允许在实体上允许查询
获取 EntityManager 实例
@PersistenceUnit
EntityManagerFactory emf;
EntityManager em;
@Resource
UserTransaction utx; //事务开启
...
em = emf.createEntityManager();
try{
utx.begin();
em.persist(SomeEntity);
em.merge(AnotherEntity);
em.remove(ThirdeNtity);
utx.commit(); //提交事务
} catch (Exception e){
utx.rollback(); //回滚事务
}
查找实体
B/B/N/÷