溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JPA包括哪些方面的技術(shù)

發(fā)布時(shí)間:2022-01-05 18:05:24 來(lái)源:億速云 閱讀:186 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“JPA包括哪些方面的技術(shù)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“JPA包括哪些方面的技術(shù)”吧!

前言

JPA由EJB 3.0軟件專家組開(kāi)發(fā),作為JSR-220實(shí)現(xiàn)的一部分。但它不囿于EJB 3.0,你可以在Web應(yīng)用、甚至桌面應(yīng)用中使用。JPA的宗旨是為POJO提供持久化標(biāo)準(zhǔn)規(guī)范,由此可見(jiàn),經(jīng)過(guò)這幾年的實(shí)踐探索,能夠脫離容器獨(dú)立運(yùn)行,方便開(kāi)發(fā)和測(cè)試的理念已經(jīng)深入人心了。目前Hibernate 3.2、TopLink 10.1.3以及OpenJPA都提供了JPA的實(shí)現(xiàn)

內(nèi)容

JPA(Java Persistence API)是SUN官方推出的Java持久化規(guī)范,它為Java開(kāi)發(fā)人員提供了一種對(duì)象/關(guān)聯(lián)映射工具來(lái)管理Java應(yīng)用中的關(guān)系數(shù)據(jù)。它的出現(xiàn)主要是為了簡(jiǎn)化現(xiàn)有的持久化開(kāi)發(fā)工作和整合ORM技術(shù),結(jié)束現(xiàn)在Hibernate,TopLink,JDO等ORM框架各自為營(yíng)的局面。值得注意的是,JPA是在充分吸收了現(xiàn)有Hibernate,TopLink,JDO 等ORM框架的基礎(chǔ)上發(fā)展而來(lái)的,具有易于使用,伸縮性強(qiáng)等優(yōu)點(diǎn)。從開(kāi)發(fā)社區(qū)的反映上看,JPA手動(dòng)極大的支持和贊揚(yáng),其中就包括了Spring與EJB3.0的開(kāi)發(fā)團(tuán)隊(duì),著眼未來(lái)幾年的技術(shù)走向,JPA作為ORM領(lǐng)域的標(biāo)準(zhǔn)化者的目標(biāo)應(yīng)該不難實(shí)現(xiàn)。

JPA包括一下三方面的技術(shù)

*ORM映射元數(shù)據(jù)

  JPA支持XML和JDK5.0注釋兩種元數(shù)據(jù)形式,元數(shù)據(jù)描述對(duì)象和表之間的映射關(guān)系,框架據(jù)此將實(shí)體對(duì)象持久化到數(shù)據(jù)庫(kù)表中。

*Java持久化API

  用來(lái)操作實(shí)體對(duì)象,執(zhí)行CRUD操作,框架在后臺(tái)替我們完成所有的事情,開(kāi)發(fā)者可以從繁瑣的JDBC和SQL代碼中解脫出來(lái)。

*查詢語(yǔ)言(JPQL)

  這是持久化操作中很重要的一個(gè)方面,通過(guò)面向?qū)ο蠖敲嫦驍?shù)據(jù)庫(kù)的查詢語(yǔ)言查詢數(shù)據(jù),避免程序的SQL語(yǔ)句緊密耦合。

JPA的優(yōu)勢(shì)

1 標(biāo)準(zhǔn)化

  JPA 是 JCP 組織發(fā)布的 Java EE 標(biāo)準(zhǔn)之一,因此任何聲稱符合 JPA 標(biāo)準(zhǔn)的框架都遵循同樣的架構(gòu),提供相同的訪問(wèn) API,這保證了基于JPA開(kāi)發(fā)的企業(yè)應(yīng)用能夠經(jīng)過(guò)少量的修改就能夠在不同的JPA框架下運(yùn)行。

2 對(duì)容器級(jí)特性的支持

  JPA 框架中支持大數(shù)據(jù)集、事務(wù)、并發(fā)等容器級(jí)事務(wù),這使得 JPA 超越了簡(jiǎn)單持久化框架的局限,在企業(yè)應(yīng)用發(fā)揮更大的作用。

3 簡(jiǎn)單易用,集成方便

  JPA的主要目標(biāo)之一就是提供更加簡(jiǎn)單的編程模型:在JPA框架下創(chuàng)建實(shí)體和創(chuàng)建Java 類一樣簡(jiǎn)單,沒(méi)有任何的約束和限制,只需要使用 javax.persistence.Entity進(jìn)行注釋;JPA的框架和接口也都非常簡(jiǎn)單,沒(méi)有太多特別的規(guī)則和設(shè)計(jì)模式的要求,開(kāi)發(fā)者可以很容易的掌握。JPA基于非侵入式原則設(shè)計(jì),因此可以很容易的和其它框架或者容器集成。

4 可媲美JDBC的查詢能力

  JPA的查詢語(yǔ)言是面向?qū)ο蠖敲嫦驍?shù)據(jù)庫(kù)的,它以面向?qū)ο蟮淖匀徽Z(yǔ)法構(gòu)造查詢語(yǔ)句,可以看成是Hibernate HQL的等價(jià)物。JPA定義了獨(dú)特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一種擴(kuò)展,它是針對(duì)實(shí)體的一種查詢語(yǔ)言,操作對(duì)象是實(shí)體,而不是關(guān)系數(shù)據(jù)庫(kù)的表,而且能夠支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高級(jí)查詢特性,甚至還能夠支持子查詢。

5 支持面向?qū)ο蟮母呒?jí)特性

  JPA 中能夠支持面向?qū)ο蟮母呒?jí)特性,如類之間的繼承、多態(tài)和類之間的復(fù)雜關(guān)系,這樣的支持能夠讓開(kāi)發(fā)者最大限度的使用面向?qū)ο蟮哪P驮O(shè)計(jì)企業(yè)應(yīng)用,而不需要自行處理這些特性在關(guān)系數(shù)據(jù)庫(kù)的持久化。

提示:

  JPA不是一種新的ORM框架,他的出現(xiàn)只是用于規(guī)范現(xiàn)有的ORM技術(shù),他不能取代現(xiàn)有的Hibernate,TopLink等ORM框架。相反,在采用JPA開(kāi)發(fā)時(shí),我們?nèi)詫⒂玫竭@些ORM框架,只是此時(shí)出來(lái)的應(yīng)用不再依賴與某個(gè)持久化供應(yīng)商。應(yīng)用可以在不修改代碼的情況下在任何JPA環(huán)境下運(yùn)行,真正做到低耦合,可擴(kuò)展的程序設(shè)計(jì)。  簡(jiǎn)單說(shuō),JPA干的就是Hibernate干的活,他們的作用是一樣的。但是,JPA只是一套規(guī)范,不是一套產(chǎn)品,Hibernate已經(jīng)是一套產(chǎn)品了。

JPA主要是為了簡(jiǎn)化現(xiàn)有的持久化開(kāi)發(fā)工作和整合ORM技術(shù),結(jié)束現(xiàn)在Hibernate,Toplink,JDO等ORM框架各自為營(yíng)的局面。之前學(xué)的Hibernate,實(shí)際上我們面對(duì)的是Hibernate的API進(jìn)行開(kāi)發(fā),這有什么不好哪,是我們跟Hibernate這個(gè)產(chǎn)品緊密的耦合在了一起,如果離開(kāi)了Hibernate我們是無(wú)法在別的ORM框架中使用我們的應(yīng)用。使用JPA后,你的應(yīng)用就可以運(yùn)行在實(shí)現(xiàn)了JPA規(guī)范的持久化產(chǎn)品中(如Hibernate,TopLink,JDO)

JPA這門(mén)技術(shù)是未來(lái)發(fā)展的必然趨勢(shì),以后我們要采用ORM技術(shù)呢,我們就不會(huì)在面對(duì)Hibernate編程,不會(huì)在面對(duì)TopLink編程,而是面對(duì)JPA規(guī)范編程,就是說(shuō),過(guò)了幾年之后,我們的應(yīng)用就會(huì)很少面對(duì)Hibernate API進(jìn)行編程,這是為什么呢,這就好比以前我們?cè)L問(wèn)數(shù)據(jù)庫(kù)一樣,假設(shè)沒(méi)有JDBC這門(mén)技術(shù)的話,我們跟各個(gè)數(shù)據(jù)庫(kù)鏈接只能使用各個(gè)數(shù)據(jù)庫(kù)廠商給我們提供的API進(jìn)行數(shù)據(jù)庫(kù)鏈接了,自從有了JDBC后,我們就不再需要面對(duì)數(shù)據(jù)庫(kù)廠商給我們提供的API進(jìn)行數(shù)據(jù)庫(kù)進(jìn)行鏈接了,而是直接使用JDBC這套規(guī)范就可以跟各個(gè)數(shù)據(jù)庫(kù)進(jìn)行對(duì)接。目前JPA跟Hibernate,TopLink的關(guān)系也是一樣的,JPA就和JDBC一樣提供一種通用的,訪問(wèn)各個(gè)ORM實(shí)現(xiàn)產(chǎn)品的橋梁工具。通過(guò)JPA技術(shù),我們只需要面對(duì)它的規(guī)范編程,編出的應(yīng)用就可以應(yīng)用在各個(gè)持久化產(chǎn)品中(包括Hibernate和TopLink),就是說(shuō)底層產(chǎn)品對(duì)我來(lái)說(shuō)已經(jīng)不重要了。

JPA的供應(yīng)商

JPA 的目標(biāo)之一是制定一個(gè)可以由很多供應(yīng)商實(shí)現(xiàn)的API,并且開(kāi)發(fā)人員可以編碼來(lái)實(shí)現(xiàn)該API,而不是使用私有供應(yīng)商特有的API。因此開(kāi)發(fā)人員只需使用供應(yīng)商特有的API來(lái)獲得JPA規(guī)范沒(méi)有解決但應(yīng)用程序中需要的功能。盡可能地使用JPA API,但是當(dāng)需要供應(yīng)商公開(kāi)但是規(guī)范中沒(méi)有提供的功能時(shí),則使用供應(yīng)商特有的API。

1.Hibernate

2.Spring

3.OpenJPA

4.其它

目前支持的實(shí)現(xiàn)包括Toplink、Hibernate Entitymanager等。TopLink以前需要收費(fèi),如今開(kāi)源了。OpenJPA雖然免費(fèi),但功能、性能、普及性等方面更加需要加大力度。

到此,相信大家對(duì)“JPA包括哪些方面的技術(shù)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

jpa
AI