概括Hibernate查詢語言
在向大家詳細介紹Hibernate查詢語言之前,首先讓大家了解下大小寫敏感性問題,然后全面介紹Hibernate查詢語言。
Hibernate查詢語言
Hibernate配備了一種非常強大的查詢語言,這種語言看上去很像SQL。但是不要被語法結構 上的相似所迷惑,HQL是非常有意識的被設計為完全面向對象的查詢,它可以理解如繼承、多態(tài) 和關聯(lián)之類的概念。
大小寫敏感性問題
除了Java類與屬性的名稱外,查詢語句對大小寫并不敏感。 所以 SeLeCT 與 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg.FOO 并不等價于 org.hibernate.eg.Foo 并且 foo.barSet 也不等價于 foo.BARSET。
本手冊中的HQL關鍵字將使用小寫字母. 很多用戶發(fā)現(xiàn)使用完全大寫的關鍵字會使查詢語句 的可讀性更強, 但我們發(fā)現(xiàn),當把查詢語句嵌入到Java語句中的時候使用大寫關鍵字比較難看。
關聯(lián)(Association)與連接(Join)
我們也可以為相關聯(lián)的實體甚至是對一個集合中的全部元素指定一個別名, 這時要使用關鍵字join。
- from Cat as cat
- inner join cat.mate as mate
- left outer join cat.kittens as kitten
- from Cat as cat left join cat.mate.kittens as kittens
- from Formula form full join form.parameter param
受支持的連接類型是從ANSI SQL中借鑒來的。
◆inner join(內連接)
◆left outer join(左外連接)
◆right outer join(右外連接)
◆full join (全連接,并不常用)
還有,一個"fetch"連接允許僅僅使用一個選擇語句就將相關聯(lián)的對象或一組值的集合隨著他們的父對象的初始化而被初始化,這種方法在使用到集合的情況下尤其有用,對于關聯(lián)和集合來說,它有效的代替了映射文件中的外聯(lián)接 與延遲聲明(lazy declarations).以上介紹Hibernate查詢語言。
【編輯推薦】