OpenJPAJPA規(guī)范實(shí)現(xiàn)
OpenJPA 是 Apache 組織提供的開源項(xiàng)目,它實(shí)現(xiàn)了 EJB 3.0 中的 JPA 標(biāo)準(zhǔn),為開發(fā)者提供功能強(qiáng)大、使用簡單的持久化數(shù)據(jù)管理框架。OpenJPA 封裝了和關(guān)系型數(shù)據(jù)庫交互的操作,讓開發(fā)者把注意力集中在編寫業(yè)務(wù)邏輯上。OpenJPA 可以作為獨(dú)立的持久層框架發(fā)揮作用,也可以輕松的與其它 Java EE 應(yīng)用框架或者符合 EJB 3.0 標(biāo)準(zhǔn)的容器集成。
除了對 JPA 標(biāo)準(zhǔn)的支持之外,OpenJPA 還提供了非常多的特性和工具支持讓企業(yè)應(yīng)用開發(fā)變得更加簡單,減少開發(fā)者的工作量,包括允許數(shù)據(jù)遠(yuǎn)程傳輸/離線處理、數(shù)據(jù)庫/對象視圖統(tǒng)一工具、使用緩存(Cache)提升企業(yè)應(yīng)用效率等。
數(shù)據(jù)遠(yuǎn)程傳輸 / 離線處理
JPA 標(biāo)準(zhǔn)規(guī)定的運(yùn)行環(huán)境是 "本地" 和 "在線" 的。本地是指 JPA 應(yīng)用中的 EntityManager 必須直接連接到指定的數(shù)據(jù)庫,而且必須和使用它的代碼在同一個 JVM 中。在線是指所有針對實(shí)體的操作必須在一個 EntityManager 范圍中運(yùn)行。這兩個特征,加上 EntityManager 是非序列化的,無法在網(wǎng)絡(luò)上傳輸,導(dǎo)致 JPA 應(yīng)用無法適用于企業(yè)應(yīng)用中的 C/S 實(shí)現(xiàn)模式。OpenJPA 擴(kuò)展了這部分接口,支持?jǐn)?shù)據(jù)的遠(yuǎn)程傳輸和離線處理。
數(shù)據(jù)庫 / 對象視圖統(tǒng)一工具
使 用 OpenJPA 開發(fā)企業(yè)應(yīng)用時,保持?jǐn)?shù)據(jù)庫和對象視圖的一致性是非常重要的工作,OpenJPA 支持三種模式處理數(shù)據(jù)庫和對象視圖的一致性:正向映射(Forward Mapping)、反向映射(Reverse Mapping)、中間匹配(Meet-in-the-Middle Mapping),并且為它們提供了相應(yīng)的工具支持。
- 正向映射 是指使用 OpenJPA 框架中提供的
org.apache.openjpa.jdbc.meta.MappingTool工具從開發(fā)者提供的實(shí)體以及在實(shí)體中提供的對象 / 關(guān)系映射注釋生成相應(yīng)的數(shù)據(jù)庫表。 - 反向映射 是指 OpenJPA 框架中提供的
org.apache.openjpa.jdbc.meta.ReverseMappingTool工具從數(shù)據(jù)庫表生成符合 JPA 標(biāo)準(zhǔn)要求的實(shí)體以及相應(yīng)的對象 / 關(guān)系映射注釋內(nèi)容。 - 中間匹配 是指開發(fā)者負(fù)責(zé)創(chuàng)建數(shù)據(jù)庫表、符合 JPA 標(biāo)準(zhǔn)的實(shí)體和相應(yīng)的對象 / 關(guān)系映射注釋內(nèi)容,使用 OpenJPA 框架中提供的
org.apache.openjpa.jdbc.meta.MappingTool工具校驗(yàn)二者的一致性。
使用緩存提升效率
性能是企業(yè)應(yīng)用重點(diǎn)關(guān)注的內(nèi)容之一,緩存是提升企業(yè)系統(tǒng)性能的重要手段之一。OpenJPA 針對數(shù)據(jù)持久化提供多種層次、多方面的緩存支持,包括數(shù)據(jù)、查詢、匯編查詢的緩存等。這些緩存的應(yīng)用可以大幅度的提高企業(yè)應(yīng)用的運(yùn)行效率。
OpenJPA Javadoc:http://www.ostools.net/apidocs/apidoc?api=openjpa
