JPA
簡述
什么是 JPA
JavaEE5.0 的平臺(tái)的 ORM 標(biāo)準(zhǔn)規(guī)范。為應(yīng)用程序訪問持久層提供統(tǒng)一的方式。
JPA 與 Hibernate 的關(guān)系
JPA 是規(guī)范,Hibernate 是實(shí)現(xiàn)。 從功能上來講,JPA 是 Hibernate 的一個(gè)子集。Hibernate 只是 JPA 的一個(gè)提供商。類似于JDBC 和 JDBC驅(qū)動(dòng)提供商。
JPA 的優(yōu)點(diǎn)
JPA 提供了更加簡潔的,基于注解的方式來進(jìn)行映射。
JPA 配置文件
要求
- 必須配置在 META-INF 目錄下,且配置名字是固定的 persistence.xml。
-
頂級(jí)節(jié)點(diǎn)為 <persistence> ,次級(jí)節(jié)點(diǎn)為 <persistence-unit>,JPA 的絕大部分信息配置在 <persistence> 節(jié)點(diǎn)內(nèi)。
- <persistence-unit> 節(jié)點(diǎn) name 屬性:用來指定這個(gè) persistence單元的名稱
- <persistence-unit> 節(jié)點(diǎn) transaction-type 屬性:指定 JPA 的事務(wù)處理策略,默認(rèn)為 RESOURCE_LOCAL,數(shù)據(jù)庫級(jí)別的事務(wù),只能針對(duì)一種數(shù)據(jù)庫,不支持分布式事務(wù)。 若需要支持分布式事務(wù),使用 JTA,即:transaction-type="JTA"。
- 如果 JPA 的提供者存在多個(gè)的時(shí)候,需要在 <provider> 節(jié)點(diǎn)配置具體使用哪個(gè)提供者。需要是 javax.persistence.spi.PersistenceProvider 的實(shí)現(xiàn)類。
- 在 <properties> 節(jié)點(diǎn)內(nèi)通過 <property> 節(jié)點(diǎn)配置數(shù)據(jù)庫連接信息。
- 在 <properties> 節(jié)點(diǎn)內(nèi)通過 <property> 節(jié)點(diǎn)配置屬于具體實(shí)現(xiàn)的特性信息。
- 通過 <class> 節(jié)點(diǎn)來配置映射的實(shí)體類。
舉例
<?xml versi