什么是JPA
JAP(Java Presistance API) 是用于Java EE 和 Java SE 環(huán)境中的持久化,以及對象/關(guān)系映射(ORM)的Java API
JPA 的實現(xiàn):Hibernate、EclipseLink、Apache OpenJPA ...
JPA 核心概念
實體
- 實體表示關(guān)系數(shù)據(jù)庫中的表
- 每個實體實例對應(yīng)于該表的行
- 類必須用
javax.persistence.Entity注解 - 類必須有一個
public或protected的無參的構(gòu)造函數(shù) - 實體實例被當中值以分離對象方式進行傳遞(例如通過會話bean的遠程業(yè)務(wù)接口),則該類必須實現(xiàn)Serializable接口
- 唯一的對象標識符:簡單主鍵(
javax.persistence.Id)、復合主鍵(javax.persistence.EmbeddedId和javax.persistence.IdClass)
關(guān)系
- 一對一:
@OneToOne - 一對多:
@OneToMany - 多對一:
@ManyToOne - 多對多:
@ManyToMany
EntityManager:管理實體的類(接口)
EntityManager 接口
- 定義用于持久性上下文進行交互的方法
- 創(chuàng)建和刪除持久實體實例,通過實體主鍵查找實體
- 允許在實體上允許查詢
獲取 EntityManager 實例
@PersistenceUnit
EntityManagerFactory emf;
EntityManager em;
@Resource
UserTransaction utx; //事務(wù)開啟
...
em = emf.createEntityManager();
try{
utx.begin();
em.persist(SomeEntity);
em.merge(AnotherEntity);
em.remove(ThirdeNtity);
utx.commit(); //提交事務(wù)
} catch (Exception e){
utx.rollback(); //回滾事務(wù)
}
查找實體
B/B/N/÷