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