標籤:blank lan 目的 根據 增加 現在 程式設計語言 hibernate 方式
SQL:全稱結構化查詢語言 (SQL)(Structured Query Language),是一種特殊目的的程式設計語言,是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯性資料庫系統;同時也是資料庫指令碼檔案的副檔名。
HQL:HQL(Hibernate Query Language)查詢相對於Criteria查詢提供了更加豐富的和靈活的查詢特性,因此Hibernate將HQL查詢方式立為官方推薦的標準查詢方式,HQL查詢在涵蓋Criteria查詢的所有功能的前提下,提供了類似標準SQL語句的查詢方式,同時也提供了更加物件導向的封裝。
JPQL:在JAVA EE中,JPQL是專門為Java 應用程式訪問和導航實體執行個體設計的。Java Presistence Query Language(JPQL),java持久性查詢語言。JPQL就是一種查詢語言,具有與SQL 相類似的特徵,JPQL是完全物件導向的,具備繼承、多態和關聯等特性,和Hibernate HQL很相似。
CQL:全稱為 Cloud Query Language,是 一套類似 SQL 查詢文法的子集和變種,其目的是讓開發人員可以使用傳統的 SQL 文法來查詢 LeanCloud 雲端資料,從而減少學習 LeanCloud 查詢 API 的成本。
不同點對比:
1、SQL與HQL:
sql 面向資料庫表查詢
hql 物件導向查詢
hql :from 後面跟的 類名+類對象 where 後 用 對象的屬性做條件
sql: from 後面跟的是表名 where 後 用表中欄位做條件
查詢: 在Hibernate中使用查詢時,一般使用Hql查詢語句,使用HQL時需要注意以下幾點:
(1)大小寫敏感。因為HQL是物件導向的,而對象類的名稱和屬性都是大小寫敏感的,所以HQL是大小寫敏感的。
如:HQL語句:from Cat as cat where cat.id > 1;與from Cat as cat where cat.ID > 1;是不一樣的,這點與SQL不同。
(2) from子句。from Cat,該句返回Cat對象執行個體,開發人員也可以給其加上別名,eg. from Cat as cat。對於多表查詢的情況,可參考如下:
from Cat as cat, Dog as dog。
2、SQL與JPQL:
JPQL是物件導向的查詢語言,因此它可以完全理解繼承、多態和關聯等特徵。而且JPQL內建了大量函數,極大地方便了JPQL查詢的功能。當然JPQL底層依然是基於SQL的,但JPQL到SQL的轉換無須開發人員關心,JPQL解析器會負責完成這種轉換,並負責執行這種轉換的SQL語句來更新資料庫。
SQL是面向關聯式資料庫的查詢語言,因此SQL操作的對象是資料表、資料列;而JQPL操作的對象是實體物件,對象屬性。
3、SQL與CQL:CQL與SQl的差異主要體現在以下幾點:
- 不支援在 select 中使用 as 關鍵字為列增加別名。
- update 和 delete 不提供批次更新和刪除,只能根據 objectId(
where objectId=xxx)和其他條件來更新或者刪除某個文檔。
- 不支援
join,關聯查詢提供 include、relatedTo 等文法來替代(關係查詢)。
- 僅支援部分 SQL 函數(內建函數)。
- 不支援
group by、having、max、min、sum、distinct 等分組彙總查詢文法。
- 不支援事務。
- 不支援鎖。
SQL、HQL、JPQL、CQL的對比