持久化規(guī)范JPA(JavapersistenceAPI)
EJB3最重要的特性是POJO編程模型,對開發(fā)人員的影響將是非常大的,因為他降低了開發(fā)人員編寫EJB的要求。EJB3的bean類將更像常規(guī)的Javabean。不要求像過去那樣實現(xiàn)特殊的回調(diào)界面或者擴(kuò)展EJB類。所以它將使EJB的開發(fā)更像常規(guī)的Java開發(fā)。從EJB3.0項目的開發(fā)情況來看,除了第一個項目開發(fā)周期相對有些長之外(因為開發(fā)人員之前尚未掌握EJB3.0,相當(dāng)于邊學(xué)邊用),后面的項目從開發(fā)周期到以后的維護(hù)時間都明顯優(yōu)于JDBC+javabean或sprint+hibernate的項目,軟件在模塊劃分上更清晰,業(yè)務(wù)模塊重用方面也有所提高(多種客戶端J2ME,Web,Wap重用業(yè)務(wù)對象),數(shù)據(jù)庫移植性方面非常棒,只需修改一下數(shù)據(jù)源就很容易切換數(shù)據(jù)庫。
JavaEE需要一個與Hibernate類似的O/R映射的框架,這個規(guī)范為JSR-220;Hibernate僅關(guān)注ORM,而EJB3.0更多則更多表現(xiàn)為一種組件框架,其中包含ORM部分。EJB3.0在設(shè)計過程中,曾經(jīng)得益于Hibernate的成功,EJB3.0EntityBean的設(shè)計理念完全來自于Hibernate。Hibernate的EntityManager產(chǎn)品為EJB3.0的EntityBean的一種Implementation。
JPA基于JavaSE5.0的注記實現(xiàn)O/Rmapping,Hibernate基于XML文件,雖然Hibernate也提供HibernateAnnotation支持Annotation方式。有兩種定義映射的方法:元數(shù)據(jù)(注記)和映射文件。盡管我們提倡采用元數(shù)據(jù)的方法,但應(yīng)該也注意到了它所帶來的不便。從本質(zhì)上講,此方法牽涉應(yīng)用程序的兩個邏輯層:域模型和映射信息。因為這兩個層是分散的,所以這兩個層需要使用不同技術(shù)進(jìn)行單獨測試。元數(shù)據(jù)方法本身不會影響層的可測試性。更確切的說,元數(shù)據(jù)方法使這兩個層好像只是一個層,由于受一系列因素的影響,這可能會引起問題。
Hibernate只是一種O/R映射框架,JavaEE更需要一個O/R映射規(guī)范.JPA為EJB3.0規(guī)范中的一個重要內(nèi)容,基于JPA的實現(xiàn)軟件具有與Hibernate同樣的優(yōu)勢。JPA為輕量級的對象關(guān)系映射實現(xiàn)持久化存儲的API。JPA可以使用在JavaSE和JavaEE環(huán)境中。
什么是JPA?
JavaEE5.0用于對象持久化的API
EJB3.0規(guī)范的重要組成部分
吸取了主流持久層框架例如Hibernate的優(yōu)點
Oracle提供Toplink實現(xiàn),為Oracle的開源JPA實現(xiàn)。
Bea提供KODO實現(xiàn),被包含在Bea的weblogic商用服務(wù)器中。
JBoss提供HibernateEntityManager實現(xiàn),JBossAS4.2.1支持EJB3.0。
ApacheOpenJPA為Apache軟件許可下的EJB3Persistence標(biāo)準(zhǔn)的開源實現(xiàn),下載地址為http://openjpa.apache.org/。OpenJPA提供了保存點功能,但JPA規(guī)范沒有。因此,希望使用保存點的OpenJPA開發(fā)人員應(yīng)該對代碼的大部分內(nèi)容使用JPA規(guī)范,而借助OpenJPAEntityManager來設(shè)置和管理保存點。
您正在閱讀:持久化規(guī)范JPA(JavapersistenceAPI)【編輯推薦】