JPA JPQL簡介

JPQL(Java持久性查詢語言)是一種面向對象的查詢語言,用於對持久實體執行數據庫操作。 JPQL不使用數據庫表,而是使用實體對象模型來操作SQL查詢。 這裏,JPA的作用是將JPQL轉換爲SQL。因此,它爲開發人員提供了一個處理SQL任務的簡單方式。

JPQL是實體JavaBeans查詢語言(EJBQL)的擴展,向其添加了以下重要功能 -

  • 它可以執行連接操作。
  • 它可以批量更新和刪除數據。
  • 它可以使用排序和分組子句執行聚合函數。
  • 單值和多值結果類型。

JPQL功能特性

  • 它是一種獨立於平臺的查詢語言。
  • 它簡單而強大。
  • 它可以用於任何類型的數據庫,如:MySQL,Oracle
  • JPQL查詢可以靜態地聲明爲元數據,也可以動態構建在代碼中。

在JPQL中創建查詢

JPQL提供了兩種可用於訪問數據庫記錄的方法。 這些方法是 -

-Query createQuery(String name) - EntityManager接口的createQuery()方法用於創建一個用於執行JPQL語句的Query接口實例。

Query query = em.createQuery("Select s.s_name from StudentEntity s");

此方法創建可在業務邏輯中定義的動態查詢。

  • Query createNamedQuery(String name) - EntityManager接口的createNamedQuery()方法用於創建用於執行命名查詢的Query接口實例。

    @NamedQuery(name = "find name" , query = "Select s from StudentEntity s")

    此方法用於創建可以在實體類中定義的靜態查詢。

現在,可以通過以下Query接口方法來控制查詢的執行 -

  • int executeUpdate() - 此方法執行更新和刪除操作。
  • int getFirstResult() - 此方法返回查詢對象設置爲檢索的第一個定位結果。
  • int getMaxResults() - 此方法返回查詢對象設置爲檢索的最大結果數。
  • java.util.List getResultList() - 此方法返回結果列表作爲非類型化列表。
  • Query setFirstResult(int startPosition) - 此方法分配要檢索的第一個結果的位置。
  • Query setMaxResults(int maxResult) - 此方法分配要檢索的最大結果數。