本篇內(nèi)容主要講解“JPA包括哪些方面的技術(shù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“JPA包括哪些方面的技術(shù)”吧!
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比敘州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式敘州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋敘州地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
前言
JPA由EJB 3.0軟件專家組開發(fā),作為JSR-220實現(xiàn)的一部分。但它不囿于EJB 3.0,你可以在Web應(yīng)用、甚至桌面應(yīng)用中使用。JPA的宗旨是為POJO提供持久化標(biāo)準(zhǔn)規(guī)范,由此可見,經(jīng)過這幾年的實踐探索,能夠脫離容器獨立運行,方便開發(fā)和測試的理念已經(jīng)深入人心了。目前Hibernate 3.2、TopLink 10.1.3以及OpenJPA都提供了JPA的實現(xiàn)
內(nèi)容
JPA(Java Persistence API)是SUN官方推出的Java持久化規(guī)范,它為Java開發(fā)人員提供了一種對象/關(guān)聯(lián)映射工具來管理Java應(yīng)用中的關(guān)系數(shù)據(jù)。它的出現(xiàn)主要是為了簡化現(xiàn)有的持久化開發(fā)工作和整合ORM技術(shù),結(jié)束現(xiàn)在Hibernate,TopLink,JDO等ORM框架各自為營的局面。值得注意的是,JPA是在充分吸收了現(xiàn)有Hibernate,TopLink,JDO 等ORM框架的基礎(chǔ)上發(fā)展而來的,具有易于使用,伸縮性強等優(yōu)點。從開發(fā)社區(qū)的反映上看,JPA手動極大的支持和贊揚,其中就包括了Spring與EJB3.0的開發(fā)團(tuán)隊,著眼未來幾年的技術(shù)走向,JPA作為ORM領(lǐng)域的標(biāo)準(zhǔn)化者的目標(biāo)應(yīng)該不難實現(xiàn)。
JPA包括一下三方面的技術(shù)
*ORM映射元數(shù)據(jù)
JPA支持XML和JDK5.0注釋兩種元數(shù)據(jù)形式,元數(shù)據(jù)描述對象和表之間的映射關(guān)系,框架據(jù)此將實體對象持久化到數(shù)據(jù)庫表中。
*Java持久化API
用來操作實體對象,執(zhí)行CRUD操作,框架在后臺替我們完成所有的事情,開發(fā)者可以從繁瑣的JDBC和SQL代碼中解脫出來。
*查詢語言(JPQL)
這是持久化操作中很重要的一個方面,通過面向?qū)ο蠖敲嫦驍?shù)據(jù)庫的查詢語言查詢數(shù)據(jù),避免程序的SQL語句緊密耦合。
JPA的優(yōu)勢
1 標(biāo)準(zhǔn)化
JPA 是 JCP 組織發(fā)布的 Java EE 標(biāo)準(zhǔn)之一,因此任何聲稱符合 JPA 標(biāo)準(zhǔn)的框架都遵循同樣的架構(gòu),提供相同的訪問 API,這保證了基于JPA開發(fā)的企業(yè)應(yīng)用能夠經(jīng)過少量的修改就能夠在不同的JPA框架下運行。
2 對容器級特性的支持
JPA 框架中支持大數(shù)據(jù)集、事務(wù)、并發(fā)等容器級事務(wù),這使得 JPA 超越了簡單持久化框架的局限,在企業(yè)應(yīng)用發(fā)揮更大的作用。
3 簡單易用,集成方便
JPA的主要目標(biāo)之一就是提供更加簡單的編程模型:在JPA框架下創(chuàng)建實體和創(chuàng)建Java 類一樣簡單,沒有任何的約束和限制,只需要使用 javax.persistence.Entity進(jìn)行注釋;JPA的框架和接口也都非常簡單,沒有太多特別的規(guī)則和設(shè)計模式的要求,開發(fā)者可以很容易的掌握。JPA基于非侵入式原則設(shè)計,因此可以很容易的和其它框架或者容器集成。
4 可媲美JDBC的查詢能力
JPA的查詢語言是面向?qū)ο蠖敲嫦驍?shù)據(jù)庫的,它以面向?qū)ο蟮淖匀徽Z法構(gòu)造查詢語句,可以看成是Hibernate HQL的等價物。JPA定義了獨特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一種擴(kuò)展,它是針對實體的一種查詢語言,操作對象是實體,而不是關(guān)系數(shù)據(jù)庫的表,而且能夠支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高級查詢特性,甚至還能夠支持子查詢。
5 支持面向?qū)ο蟮母呒壧匦?/p>
JPA 中能夠支持面向?qū)ο蟮母呒壧匦?,如類之間的繼承、多態(tài)和類之間的復(fù)雜關(guān)系,這樣的支持能夠讓開發(fā)者最大限度的使用面向?qū)ο蟮哪P驮O(shè)計企業(yè)應(yīng)用,而不需要自行處理這些特性在關(guān)系數(shù)據(jù)庫的持久化。
提示:
JPA不是一種新的ORM框架,他的出現(xiàn)只是用于規(guī)范現(xiàn)有的ORM技術(shù),他不能取代現(xiàn)有的Hibernate,TopLink等ORM框架。相反,在采用JPA開發(fā)時,我們?nèi)詫⒂玫竭@些ORM框架,只是此時出來的應(yīng)用不再依賴與某個持久化供應(yīng)商。應(yīng)用可以在不修改代碼的情況下在任何JPA環(huán)境下運行,真正做到低耦合,可擴(kuò)展的程序設(shè)計。 簡單說,JPA干的就是Hibernate干的活,他們的作用是一樣的。但是,JPA只是一套規(guī)范,不是一套產(chǎn)品,Hibernate已經(jīng)是一套產(chǎn)品了。
JPA主要是為了簡化現(xiàn)有的持久化開發(fā)工作和整合ORM技術(shù),結(jié)束現(xiàn)在Hibernate,Toplink,JDO等ORM框架各自為營的局面。之前學(xué)的Hibernate,實際上我們面對的是Hibernate的API進(jìn)行開發(fā),這有什么不好哪,是我們跟Hibernate這個產(chǎn)品緊密的耦合在了一起,如果離開了Hibernate我們是無法在別的ORM框架中使用我們的應(yīng)用。使用JPA后,你的應(yīng)用就可以運行在實現(xiàn)了JPA規(guī)范的持久化產(chǎn)品中(如Hibernate,TopLink,JDO)
JPA這門技術(shù)是未來發(fā)展的必然趨勢,以后我們要采用ORM技術(shù)呢,我們就不會在面對Hibernate編程,不會在面對TopLink編程,而是面對JPA規(guī)范編程,就是說,過了幾年之后,我們的應(yīng)用就會很少面對Hibernate API進(jìn)行編程,這是為什么呢,這就好比以前我們訪問數(shù)據(jù)庫一樣,假設(shè)沒有JDBC這門技術(shù)的話,我們跟各個數(shù)據(jù)庫鏈接只能使用各個數(shù)據(jù)庫廠商給我們提供的API進(jìn)行數(shù)據(jù)庫鏈接了,自從有了JDBC后,我們就不再需要面對數(shù)據(jù)庫廠商給我們提供的API進(jìn)行數(shù)據(jù)庫進(jìn)行鏈接了,而是直接使用JDBC這套規(guī)范就可以跟各個數(shù)據(jù)庫進(jìn)行對接。目前JPA跟Hibernate,TopLink的關(guān)系也是一樣的,JPA就和JDBC一樣提供一種通用的,訪問各個ORM實現(xiàn)產(chǎn)品的橋梁工具。通過JPA技術(shù),我們只需要面對它的規(guī)范編程,編出的應(yīng)用就可以應(yīng)用在各個持久化產(chǎn)品中(包括Hibernate和TopLink),就是說底層產(chǎn)品對我來說已經(jīng)不重要了。
JPA的供應(yīng)商
JPA 的目標(biāo)之一是制定一個可以由很多供應(yīng)商實現(xiàn)的API,并且開發(fā)人員可以編碼來實現(xiàn)該API,而不是使用私有供應(yīng)商特有的API。因此開發(fā)人員只需使用供應(yīng)商特有的API來獲得JPA規(guī)范沒有解決但應(yīng)用程序中需要的功能。盡可能地使用JPA API,但是當(dāng)需要供應(yīng)商公開但是規(guī)范中沒有提供的功能時,則使用供應(yīng)商特有的API。
1.Hibernate
2.Spring
3.OpenJPA
4.其它
目前支持的實現(xiàn)包括Toplink、Hibernate Entitymanager等。TopLink以前需要收費,如今開源了。OpenJPA雖然免費,但功能、性能、普及性等方面更加需要加大力度。
到此,相信大家對“JPA包括哪些方面的技術(shù)”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!