JPA

持久化操作

持久化操作

持久性操作是針對數據庫的加載和存儲活動。業務組件中的所有持久操作都被分類為服務類。

在層次結構中創建一個名為“com.world.EclipseLink”的包。在src (Source)包下。所有的服務類都命名為Createstudent.java、Updatestudent.java、Findstudent.java和Deletestudent.java,它們都是給定包的一部分。

JPA JPQL

Java持久性查詢語言

Java持久性查詢語言(JPQL)在JPA規範中表示。它用於針對將存儲在關係數據庫中的實體構建查詢。JPQL是使用SQL語法創建的。但是,它不會對數據庫產生直接影響。

JPQL可以使用SELECT子句檢索信息或數據,使用UPDATE和DELETE子句進行大規模更新。EntityManager.createQuery() API將支持查詢語言。

查詢結構

JPQL語法非常接近SQL語法。類似SQL的語法很有優勢,因為SQL是許多開發人員在應用程序中使用的一種簡單的結構化查詢語言。SQL操作關係數據庫表、記錄和字段,而JPQL操作Java類和實例。

標量函數和聚合函數

標量函數根據輸入輸出返回結果輸出。聚合函數通過計算輸入值返回結果值。

在com.world.EclipseLink.service包下創建一個名為ScalarandAggregateFunctions.java的類

在程序的累積和執行之後,您將在Eclipse IDE的控製台麵板中收到結果。

Between, And, Like關鍵字

JPQL的主要關鍵字是“Between”、“And”和“Like”。在查詢中,在Where子句後麵使用這些關鍵字。

在com.world.EclipseLink.service包下創建一個名為BetweenLikeFunctions.java的類。

訂購

我們使用ORDER BY子句對JPQL中的記錄進行排序。此子句的使用與SQL子句的使用相同,但它與實體有關。以身作則。

在com.world.EclipseLink.service包下創建Order.java類。

命名查詢

@NamedQuery是一個預定義的具有不變查詢字符串的查詢。通過將JPQL查詢字符串與POJO(而不是動態查詢)分離,使用命名查詢可以改進代碼的排列。它沒有動態地將字麵值包含到查詢字符串中,而是在更高效的查詢中額外傳遞查詢參數和結果。

首先,在名為student.java的com.world.eclipselink.entity包中添加@NamedQuery員工的實體類注釋。

在com.world.eclipselink.service包下創建一個類NamedQueries.java。

急加載和緩加載

JPA的主要概念是複製數據庫的緩存內存。當數據庫被事務處理時,它最初會影響複製數據,並且隻有在使用實體管理器提交時才會更改數據庫。

有兩種方法可以從數據庫中獲取記錄——急切獲取和惰性獲取。

急於獲取

在使用主鍵獲取記錄的同時檢索整個記錄。

延遲獲取

它使用主鍵監視報表的可用性(如果主鍵可用)。之後,如果您請求該實體的任何getter方法,它將檢索完整的。

但是您可以在第一次嚐試獲取記錄時獲取lazy。因此,緩存內存中已經保存了整個記錄的副本。就性能而言,延遲獲取更可取。

JPA先進的映射

JPA是一個與java規範一起發布的庫。因此,它支持實體持久性的所有麵向對象原則。

繼承的策略

是麵向對象語言的基本概念,使用實體之間的繼承關係和技術。JPA支持三種繼承方法:SINGLE_TABLE、JOINED_TABLE和TABLE_PER_CONCRETE_CLASS。

單表的策略

單表方法考慮所有類字段(包括父類和子類),並將它們映射到一個稱為SINGLE_TABLE策略的表中。區別值是在一個表中區分三個實體的值的一個重要因素。

創建實體

  • 創建一個包' com.world.EclipseLink。實體'在' src '包下。在給定的包下創建一個新的java類record.java。
  • @DescriminatorColumn定義字段名(類型),它的內容分配其餘字段。
  • 在com.world.EclipseLink.entity包下創建一個子類(類)來記錄名為feerecord.java的類。
  • 在com.world.EclipseLink.entity包下創建一個名為unpaidfee.java的feerecord類的子類(類)。

persistence . xml

xml文件包括數據庫的配置數據和實體類的注冊數據。

服務類

服務類是業務組件實現的一部分。在'src'下麵的'com.world.EclipseLink。Service '包被創建。

在指定的包下創建一個名為Savestudent.java的類來存儲record、feerecord和unpaidfee類字段。

加入表策略

表的聯合策略使用唯一值共享提到的列,以連接表和促進事務。

創建一個JPA項目。

創建實體

  • 創建一個包' com.world.EclipseLink。src包下的實體。在指定的包下創建一個名為record.java的新java類。
  • 在com.world.EclipseLink.entity包下創建一個子類來記錄feerecord.java類。
  • 在com.world.EclipseLink.entity包下創建一個子類來記錄類unpaidfee.java。

persistence . xml

xml文件包含數據庫的結構信息和實體類的注冊數據。

服務類

服務類是業務組件實現的一部分。

在“src”包“com.world.EclipseLink.service”下創建一個包。

在指定的包下創建一個類Savestudent.java來保存record、feerecord和unpaidfee類字段。

在累積和運行程序之後,您將在Eclipse IDE的控製台麵板中收到通知。

每個類表策略

每個類一個表的方法是為每個子實體創建一個表。將創建記錄表,但它將保存空記錄。記錄表的字段值需要由feerecord和unpaidfee表共享。

創建實體

  • 創建一個包' com.world.EclipseLink。src包下的實體。在給定的包下創建一個新的java類record.java。
  • 在com.world.EclipseLink.entity包下創建一個子類來記錄名為feerecord.java的類。
  • 在com.world.EclipseLink.entity包下創建一個子類來記錄feerecord.java類。

persistence . xml

xml文件包含數據庫的結構信息和實體類的注冊數據。

服務類

服務類是業務組件實現的一部分。在'src'下麵的'com.world.EclipseLink。Service '包被創建。

在指定的包下創建一個名為Savestudent.java的類來存儲record、feerecord和unpaidfee類字段。

在累積和運行程序之後,您將在Eclipse IDE的控製台麵板中收到通知。

Baidu
map