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






