1. 程式人生 > >條件查詢、SQL、JPQL、HQL比較

條件查詢、SQL、JPQL、HQL比較

htm gpo 知識 ber javase 方便 ble 關聯 ase

一、什麽是JPQL

在 Java EE 中,JPQL( Java 持久性查詢語言)是專門為Java 應用程序訪問和導航實體實例設計的。JPQL是EJB2使用的查詢語言EJB QL的擴展,它繼承了EJB QL並對其做了一些改變。

二、JPQL與SQL

  PQL是面向對象的查詢語言,因此它可以完全理解繼承、多態和關聯等特征。而且JPQL內置了大量函數,極大地方便了JPQL查詢的功能。當然JPQL底層依然是基於SQL的,但JPQL到SQL的轉換無須開發者關心,JPQL解析器會負責完成這種轉換,並負責執行這種轉換的SQL語句來更新數據庫。
  SQL是面向關系數據庫的查詢語言,因此SQL操作的對象是數據表、數據列;而JQPL操作的對象是實體對象,對象屬性。

代碼對比

SQL:

//原生的SQL語句
select name,age,user_id from t_user

JPQL:

//面向對象的JPQL語句
select name,age,userId from User 

分析:
第一條語句用於對t_user table表執行查詢,查詢name、age、user_id三個數據列;
第二條語句用於對User實體執行查詢,查詢的是User實體的name、age、userId 屬性。

三、HQL

HQL(Hibernate Query Language)是面向對象的查詢,from後面跟的是“表名”,where後用“表中字段”做條件。在Hibernate中使用查詢時,
一般用HQL查詢語句。因為HQL是面向對象的,而對象類的名稱和屬性都是大小寫敏感的,所以是大小寫敏感的。

條件查詢、SQL、JPQL、HQL比較

一、什麽是JPQL

在 Java EE 中,JPQL( Java 持久性查詢語言)是專門為Java 應用程序訪問和導航實體實例設計的。JPQL是EJB2使用的查詢語言EJB QL的擴展,它繼承了EJB QL並對其做了一些改變。

二、JPQL與SQL

  PQL是面向對象的查詢語言,因此它可以完全理解繼承、多態和關聯等特征。而且JPQL內置了大量函數,極大地方便了JPQL查詢的功能。當然JPQL底層依然是基於SQL的,但JPQL到SQL的轉換無須開發者關心,JPQL解析器會負責完成這種轉換,並負責執行這種轉換的SQL語句來更新數據庫。
  SQL是面向關系數據庫的查詢語言,因此SQL操作的對象是數據表、數據列;而JQPL操作的對象是實體對象,對象屬性。

代碼對比

SQL:

//原生的SQL語句
select name,age,user_id from t_user

JPQL:

//面向對象的JPQL語句
select name,age,userId from User 

分析:
第一條語句用於對t_user table表執行查詢,查詢name、age、user_id三個數據列;
第二條語句用於對User實體執行查詢,查詢的是User實體的name、age、userId 屬性。

三、HQL

HQL(Hibernate Query Language)是面向對象的查詢,from後面跟的是“表名”,where後用“表中字段”做條件。在Hibernate中使用查詢時,
一般用HQL查詢語句。因為HQL是面向對象的,而對象類的名稱和屬性都是大小寫敏感的,所以是大小寫敏感的。

條件查詢、SQL、JPQL、HQL比較