• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      JPA在數(shù)據(jù)持久化層的應(yīng)用與原理探析

      2019-06-17 01:25溫立輝
      科技資訊 2019年6期

      溫立輝

      摘? 要:針對Java EE編程中的JPA持久化問題,討論了JPA的適用場景,闡述JPA規(guī)范的應(yīng)用原理;在論述中詳細分析了JPA持久化過程中的4種不同數(shù)據(jù)實體狀態(tài),以及不同實體狀態(tài)的轉(zhuǎn)化條件及相關(guān)的API操作接口;同時也分析了數(shù)據(jù)實體間的關(guān)聯(lián)關(guān)系,以及不同關(guān)聯(lián)關(guān)系在JPA持久化ORM技術(shù)中配置實現(xiàn),最后說明了JPQL語句的原生SQL語句的區(qū)別以及其在Java EE領(lǐng)域的重要作用。

      關(guān)鍵詞:JPA? JPQL? 持久化規(guī)范? ORM

      中圖分類號:TP311.52? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1672-3791(2019)02(c)-0005-02

      JPA即Java 持久化API(Java Persistence API),是Java EE5后提出的的一個持久化規(guī)范,此規(guī)范參照了EJB3的 Entity Bean(實體Bean)實現(xiàn)過程,其使用JPQL語句來對表實體進行CRUD的操作,在Java語言企業(yè)級編程存在著非常廣泛的應(yīng)用。

      1? JPA概述

      JPA作為一個持久化規(guī)范,其專門負責(zé)定義與數(shù)據(jù)存儲層的交互標準,定義交互過程,其作為規(guī)范,只定義了上層接口,并不負責(zé)具體的實現(xiàn)過程,實際上在開發(fā)市場中,JPA有眾多的實現(xiàn)方式,如Hibernate、TopLink、OpenJPA等持久化框架。

      JPA作為一套數(shù)據(jù)持久化的規(guī)范,其思想對ORM編程繼承與細化,在Java編程中由于面向?qū)ο缶幊趟枷肱c關(guān)系型數(shù)據(jù)庫的思維差別,致使應(yīng)用程序與關(guān)系數(shù)據(jù)庫存在一定的交互障礙,ORM作為面向?qū)ο蟮膽?yīng)用程序與關(guān)系型數(shù)據(jù)庫間的交互中介橋梁,解決了開發(fā)中編碼問題,使用開發(fā)人員能用使用面向?qū)ο蟮乃季S去處理和操作關(guān)系庫。

      2? JPA狀態(tài)表述

      在JPA規(guī)范中,實體狀態(tài)的變化都是通過EntityManager接口下的相關(guān)函數(shù)的被調(diào)用而觸發(fā)的,一個實體從對象變成數(shù)據(jù)庫表中的一條記錄,一共可經(jīng)歷4個狀態(tài),分別是:新建狀態(tài)(New)、游離狀態(tài)(Detached)、受控狀態(tài)(Managed)、刪除狀態(tài)(Removed)。

      新建狀態(tài):當一個實體對象剛剛通過new創(chuàng)建出來,還未和其他持久化機制發(fā)生任何關(guān)聯(lián),這時這個實體的實例處于新建狀態(tài)。

      游離狀態(tài):當實體對象已經(jīng)從持久化機制中得到唯一主鍵,但實例未與持久化機制發(fā)生關(guān)聯(lián)關(guān)系,則此時對象處于游離狀態(tài),當通過EntityManager接口調(diào)用clear()方法,實例對象進入游離狀態(tài)。

      受控狀態(tài):實體對象已經(jīng)從持久化機制中得到唯一主鍵,且已經(jīng)與持久化機制發(fā)生關(guān)聯(lián)關(guān)系,則對象處于受控狀態(tài),當通過EntityManager接口調(diào)用persist()方法,實例對象進入游離狀態(tài)。

      刪除狀態(tài):如果一個實體對象滿足受控的基本要求,即處于受控狀態(tài),此時將對象刪除,則對象進入刪除狀態(tài),當通過EntityManager接口調(diào)用remove()方法,實例對象到達刪除狀態(tài)。

      3? JPA關(guān)系實體表述

      JPA作為持久化的操作規(guī)范,其對應(yīng)用程序中實體間的關(guān)系作了明確的定義,共分三大類型,分別是:一對一(one to one)、一對多(one to many)、多對多(many to many),接下來以Hibernate框架的JPA實現(xiàn)為載體來進行各種實體關(guān)系的分析。

      一對一:就是兩個實體間,一方實體的任一實例只能對應(yīng)于另一方實體唯一的實例。在日常生活中,例如個人與身份證號碼的關(guān)系,每個人都有唯一的一個身份證號碼,同時每個身份證號碼都只能屬于某一個人。

      具體實現(xiàn)需要在每個實體中引入對方實體作為本類的一個全局屬性。如需要在用戶(Person)類中引入對方:private Idcard idcard;同時需要在身份證(Idcard)類引對方:private Person person。還要在XML文件做相應(yīng)的設(shè)置,在Person實體的映射文件中加入:;在Idcard實體的映射文件中加入:

      一對多:就是兩個實體之間,一方實體的一個實例可以在另一實體中找到若干個與之對應(yīng)的實例,但另一方實體的一個實例卻只能對應(yīng)對方實體的一個實例。例如,在一個家庭中一對父母親可以生育多個子女,但每個子女卻都只能有一對父母親。

      在具體實現(xiàn)中,需要在代表一方的父母實體 (Father) 類中引入一個Set集合屬性:private Set sons = new HashSet(0),作為與多方的關(guān)聯(lián)屬性;同時需要在代表多方的子女實體 (Son) 類中引入一個Father類型屬性:private Father father。最后需要在Father實體映射文件中配置:;并在Son實體映射文件中配置:

      平乡县| 曲松县| 平罗县| 康乐县| 内江市| 阜宁县| 贡觉县| 岳池县| 多伦县| 莱州市| 枣阳市| 木兰县| 肥乡县| 五家渠市| 温泉县| 清新县| 芦溪县| 富民县| 巴林左旗| 平武县| 西藏| 巍山| 达拉特旗| 安陆市| 县级市| 武宁县| 平罗县| 宣化县| 阳曲县| 宁国市| 海林市| 潼关县| 奉化市| 城步| 会泽县| 神池县| 红河县| 诸城市| 开封县| 银川市| 北海市|