JavaEE 第十一週

JPQL查詢和SQL語言的學習筆記數據庫

一. JPQL編程

   1. 什麼是JPQL?數據結構

   在 Java EE 中,JPQL就是一種查詢語言,具備與SQL 相相似的特徵,JPQL是徹底面向對象的,具有繼承、多態和關聯等特性,和hibernate的HQL很類似。編程語言

JPQL( Java 持久性查詢語言)是專門爲Java 應用程序訪問和導航實體實例設計的。JPQL是EJB2使用的查詢語言EJB QL的擴展,它繼承了EJB QL並對其作了函數

一些改變。學習

   2. 使用spa

   JPQL 語句支持兩種方式的參數定義方式 : 命名參數和位置參數 。在同一個查詢語句中只容許使用一種參數定義方式。.net

   命令參數的格式爲:「 : + 參數名」
   例:
   Query query = em.createQuery("select p from Person p where p.personid=:Id ");
   query.setParameter("Id",new Integer(1));
 
   位置參數的格式爲「 ?+ 位置編號」
   例:
   Query query = em.createQuery("select p from Person p where p.personid=?1 ");
   query.setParameter(1,new Integer(1));

   JPQL語言的語句能夠是 select 語句、update 語句或delete語句,它們都經過 Query 接口封裝執行。hibernate

   Query接口封裝了執行數據庫查詢的相關方法。調用 EntityManager 的 createQuery、create NamedQuery 及 createNativeQuery 方法能夠得到查詢對象,進設計

而可調用 Query 接口的相關方法來執行查詢操做。

   步驟以下:

   要從 Java 代碼內發出 JPQL 查詢,您須要利用 EntityManager API 和 Query API 的相應方法,執行如下通常步驟:

   1.   使用注入或經過 EntityManagerFactory 實例獲取一個 EntityManager 實例。

   2.   經過調用相應 EntityManager 的方法(如 createQuery),建立一個 Query 實例。

   3.   若是有查詢參數,使用相應 Query 的 setParameter 方法進行設置。

   4.   若是須要,使用 setMaxResults 和/或 setFirstResult Query 的方法設置要檢索的實例的最大數量和/或指定檢索的起始實例位置。

   5.   若是須要,使用 setHint Query 的方法設置供應商特定的提示。

   6.   若是須要,使用 setFlushMode Query 的方法設置查詢執行的刷新模式,覆蓋實體管理器的刷新模式。

   7.   使用相應 Query 的方法 getSingleResult 或 getResultList 執行查詢。若是進行更新或刪除操做,您必須使用 executeUpdate 方法,它返回已更新或刪除的實體實例的數量。

   JPQL的查詢能夠分爲命名查詢和動態查詢。

   動態查詢

   可使用EntityManager.createQuery方法建立動態查詢,惟一的要求是把合法的JPQL語句傳遞給此方法。以下:

 

   Query query = em.createQuery(「select p from Person p where p.id=1033」);

   其中where語句但是可選的。在這裏JPQL看上去和SQL語句很像,但應當注意到的是from後邊的Person是實體Bean而不是數據表。

 

   在所寫的JPQL語句中你能夠像示例中那樣的直接將查詢條件寫在語句中。可是還有更好的方法。在這裏你可使用設置查詢參數的方式,其中又有位置參數和命名參數的分別。

 

   使用位置參數以下所示:

 

   Query query = em.createQuery(「select p from Person p where p.id=?1」);

 

   Query.setParameter(1, 1033);//第一個參數是位置,第二個參數查詢條件

 

   使用命名參數以下所示:

 

   Query query = em.createQuery(「select p from Person p where p.id=:id」);

 

   Query.setParameter(「id」, 1033);//第一個參數是參數名稱,第二個參數查詢條件

 

   須要注意的是位置參數的是位置前加符號」?」,命名參數是名稱前是加符號」:」。

二. SQL

   1. 什麼是SQL?

   結構化查詢語言是高級的非過程化編程語言,容許用戶在高層數據結構求用戶指定對數據的存放方法,也不須要用戶瞭解具體的數據存放方式,因此具備徹底不一樣底層結構的不一樣數據庫系統, 可使用相同的結構化查詢語言做爲數據輸入與管理的接口。結構化查詢語言語句能夠嵌套,這使它具備極大的靈活性和強大的功能。

    2. 構成

    結構化查詢語言包含6個部分:

    一:數據查詢語言(DQL:Data Query Language):
        其語句,也稱爲「數據檢索語句」,用以從表中得到數據,肯定數據怎樣在應用程序給出。保留字SELECT是DQL(也是全部SQL)用得最多的動詞,其餘DQL經常使用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其餘類型的SQL語句一塊兒使用。
     二:數據操做語言(DML:Data Manipulation Language):
       其語句包括動詞INSERT,UPDATE和DELETE。它們分別用於添加,修改和刪除表中的行。也稱爲動做查詢語言。
    三:事務處理語言(TPL):
       它的語句能確保被DML語句影響的表的全部行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
    四:數據控制語言(DCL):
       它的語句經過GRANT或REVOKE得到許可,肯定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對錶單個列的訪問。
    五:數據定義語言(DDL):
       其語句包括動詞CREATE和DROP。在數據庫中建立新表或刪除表(CREAT TABLE 或 DROP TABLE);爲表加入索引等。DDL包括許多與人數據庫目錄中得到數據有關的保留字。它也是動做查詢的一部分。
    六:指針控制語言(CCL):
       它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用於對一個或多個表單獨行的操做。
 
三. 區別
    JPQL是面向對象的查詢語言,所以它能夠徹底理解繼承、多態和關聯等特徵。並且JPQL內置了大量函數,極大地方便了JPQL查詢的功能。固然JPQL底層依然
是基於SQL的,但JPQL到SQL的轉換無須開發者關心,JPQL解析器會負責完成這種轉換,並負責執行這種轉換的SQL語句來更新數據庫。 
    
     SQL是面向關係數據庫的查詢語言,所以SQL操做的對象是數據表、數據列;而JQPL操做的對象是實體對象,對象屬性。
 
摘自:https://blog.csdn.net/zsm653983/article/details/8114244
         https://blog.csdn.net/zt15732625878/article/details/78378995?foxhandler=RssReadRenderProcessHandler
相關文章
相關標籤/搜索