日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
簡述Hibernate部分查詢語言(一)

Hibernate配備了一種非常強大的Hibernate查詢語言,這種語言看上去很像SQL。本文主要介紹大小寫敏感性問題、from子句、關(guān)聯(lián)(Association)與連接(Join)等。但是不要被語法結(jié)構(gòu) 上的相似所迷惑,HQL是非常有意識的被設(shè)計為完全面向?qū)ο蟮牟樵?,它可以理解如繼承、多態(tài) 和關(guān)聯(lián)之類的概念。

成都創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為普蘭店企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,普蘭店網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

1. 大小寫敏感性問題

除了Java類與屬性的名稱外,查詢語句對大小寫并不敏感。 所以 SeLeCT 與 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg.FOO 并不等價于 org.hibernate.eg.Foo 并且 foo.barSet 也不等價于 foo.BARSET。

本手冊中的HQL關(guān)鍵字將使用小寫字母. 很多用戶發(fā)現(xiàn)使用完全大寫的關(guān)鍵字會使查詢語句 的可讀性更強, 但我們發(fā)現(xiàn),當把查詢語句嵌入到Java語句中的時候使用大寫關(guān)鍵字比較難看。

2. from子句

最簡單的Hibernate查詢語句的形式如下:

 
 
 
  1. from eg.Cat 

該子句簡單的返回eg.Cat類的所有實例。 通常我們不需要使用類的全限定名, 因為 auto-import(自動引入) 是缺省的情況。 所以我們幾乎只使用如下的簡單寫法:

 
 
 
  1. from Cat 

大多數(shù)情況下, 你需要指定一個別名, 原因是你可能需要 在Hibernate查詢語言的其它部分引用到Cat

 
 
 
  1. om Cat as cat 

這個語句把別名cat指定給類Cat 的實例, 這樣我們就可以在隨后的查詢中使用此別名了。 關(guān)鍵字as 是可選的,我們也可以這樣寫:

 
 
 
  1. from Cat cat 

子句中可以同時出現(xiàn)多個類, 其查詢結(jié)果是產(chǎn)生一個笛卡兒積或產(chǎn)生跨表的連接。

 
 
 
  1. from Formula, Parameter  
  2. from Formula as form, Parameter as param  

    查詢語句中別名的開頭部分小寫被認為是實踐中的好習慣, 這樣做與Java變量的命名標準保持了一致 (比如,domesticCat)。

    3. 關(guān)聯(lián)(Association)與連接(Join)

    Hibernate查詢語言,我們也可以為相關(guān)聯(lián)的實體甚至是對一個集合中的全部元素指定一個別名, 這時要使用關(guān)鍵字join。

       
       
       
    1. from Cat as cat   
    2.     inner join cat.mate as mate  
    3.     left outer join cat.kittens as kitten  
    4. from Cat as cat left join cat.mate.kittens as kittens  
    5. from Formula form full join form.parameter param  

    受支持的連接類型是從ANSI SQL中借鑒來的。

    inner join(內(nèi)連接)

    left outer join(左外連接)

    right outer join(右外連接)

    full join (全連接,并不常用)

    語句inner join, left outer join 以及 right outer join 可以簡寫。

       
       
       
    1. from Cat as cat   
    2.     join cat.mate as mate  
    3.     left join cat.kittens as kitten 

    還有,一個"fetch"連接允許僅僅使用一個選擇語句就將相關(guān)聯(lián)的對象或一組值的集合隨著他們的父對象的初始化而被初始化,這種方法在使用到集合的情況下尤其有用,對于關(guān)聯(lián)和集合來說,它有效的代替了映射文件中的外聯(lián)接 與延遲聲明(lazy declarations). 查看 第 19.1 節(jié) “ 抓取策略(Fetching strategies) ” 以獲得等多的信息。

       
       
       
    1. from Cat as cat   
    2.     inner join fetch cat.mate  
    3.     left join fetch cat.kittens 

    一個fetch連接通常不需要被指定別名, 因為相關(guān)聯(lián)的對象不應當被用在 where 子句 (或其它任何子句)中。同時,相關(guān)聯(lián)的對象 并不在查詢的結(jié)果中直接返回,但可以通過他們的父對象來訪問到他們。

    注意,在目前的版本中,一個查詢中只有一個集合角色能被連接取得(超過一個的角色將會導致形成一個笛卡兒積)。 同時注意fetch構(gòu)造變量在使用了scroll() 或 iterate()函數(shù) 的查詢中是不能使用的。***注意,使用full join fetch 與 right join fetch是沒有意義的。

    如果你使用屬性級別的延遲獲?。╨azy fetching)(這是通過重新編寫字節(jié)碼實現(xiàn)的),可以使用 fetch all properties 來強制Hibernate立即取得那些原本需要延遲加載的屬性(在***個查詢中)。

       
       
       
    1. from Document fetch all properties order by name  
    2. from Document doc fetch all properties where lower(doc.name) like '%cats%'  

    【編輯推薦】

    1. 簡述Hibernate部分查詢語言(二)
    2. Hibernate的重要技術(shù)簡介
    3. Struts-Spring-Hibernate案例
    4. Hibernate Sessin接口常用方法
    5. Hibernate事務(wù)全面介紹


    當前題目:簡述Hibernate部分查詢語言(一)
    文章分享:http://www.5511xx.com/article/cosjpic.html