麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

方便的HQL: Hibernate查詢語言

2019-11-18 12:57:44
字體:
來源:轉載
供稿:網友

  HQL: Hibernate查詢語言 Hibernate配備了一種非常強大的查詢語言,這種語言看上去很像SQL。但是不要被語法結構 上的相似所迷惑,HQL是非常有意識的被設計為完全面向對象的查詢,它可以理解如繼續、多態 和關聯之類的概念。
  
  15.1. 大小寫敏感性問題
  
  除了java類與屬性的名稱外,查詢語句對大小寫并不敏感。 所以 SeLeCT 與 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg.FOO 并不等價于 org.hibernate.eg.Foo 并且 foo.barSet 也不等價于 foo.BARSET。
  
  本手冊中的HQL要害字將使用小寫字母. 很多用戶發現使用完全大寫的要害字會使查詢語句 的可讀性更強, 但我們發現,當把查詢語句嵌入到Java語句中的時候使用大寫要害字比較難看。
  
  15.2. from子句
  
  Hibernate中最簡單的查詢語句的形式如下:
  
  代碼內容
  from eg.Cat
  
  該子句簡單的返回eg.Cat類的所有實例。 通常我們不需要使用類的全限定名, 因為 auto-import(自動引入) 是缺省的情況。 所以我們幾乎只使用如下的簡單寫法:
  
  代碼內容
  from Cat
  
  大多數情況下, 你需要指定一個別名, 原因是你可能需要 在查詢語句的其它部分引用到Cat
  
  代碼內容
  from Cat as cat
  
  這個語句把別名cat指定給類Cat 的實例, 這樣我們就可以在隨后的查詢中使用此別名了。 要害字as 是可選的,我們也可以這樣寫:
  
  代碼內容
  from Cat cat
  
  子句中可以同時出現多個類, 其查詢結果是產生一個笛卡兒積或產生跨表的連接。
  from Formula, Parameter
  from Formula as form, Parameter as param
  
  查詢語句中別名的開頭部分小寫被認為是實踐中的好習慣, 這樣做與Java變量的命名標準保持了一致 (比如,domesticCat)。
  
  15.3. 關聯(Association)與連接(Join)
  
  我們也可以為相關聯的實體甚至是對一個集合中的全部元素指定一個別名, 這時要使用要害字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 (全連接,并不常用)
  
  語句inner join, left outer join 以及 right outer join 可以簡寫。
  
  代碼內容
  from Cat as cat
  join cat.mate as mate
  left join cat.kittens as kitten
  
  還有,一個"fetch"連接答應僅僅使用一個選擇語句就將相關聯的對象或一組值的集合隨著他們的父對象的初始化而被初始化,這種方法在使用到集合的情況下尤其有用,對于關聯和集合來說,它有效的代替了映射文件中的外聯接 與延遲聲明(lazy declarations). 查看 第 20.1 節 “ 抓取策略(Fetching strategies) ” 以獲得等多的信息。
  
  代碼內容
  from Cat as cat
  inner join fetch cat.mate
  left join fetch cat.kittens
  
  一個fetch連接通常不需要被指定別名, 因為相關聯的對象不應當被用在 where 子句 (或其它任何子句)中。同時,相關聯的對象 并不在查詢的結果中直接返回,但可以通過他們的父對象來訪問到他們。
  
  注重fetch構造變量在使用了scroll() 或 iterate()函數 的查詢中是不能使用的。最后注重,使用full join fetch 與 right join fetch是沒有意義的。
  
  假如你使用屬性級別的延遲獲取(lazy fetching)(這是通過重新編寫字節碼實現的),可以使用 fetch all PRoperties 來強制Hibernate立即取得那些原本需要延遲加載的屬性(在第一個查詢中)。
  
  代碼內容
  from Document fetch all properties order by name
  from Document doc fetch all properties where lower(doc.name) like ’%cats%’

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久草最新在线 | 特一级黄色毛片 | 国产中文99视频在线观看 | 久久超| 黄色一级片免费在线观看 | 国产亚洲精品久久久闺蜜 | 午夜久久视频 | 成人午夜网址 | 精品国产91久久久 | 欧美日本中文字幕 | 国产一级aa大片毛片 | 亚洲第一综合 | 女18一级大黄毛片免费女人 | av电影手机在线看 | 欧美爱爱视频免费看 | 国产毛片毛片 | 中文字幕 亚洲一区 | 中文字幕在线日韩 | 亚洲精品久久久久www | 久久国产精品影视 | 亚洲第一页夜 | 亚洲婷婷日日综合婷婷噜噜噜 | 福利在线免费视频 | 精品一区二区在线观看视频 | 精品亚洲在线 | 午夜生活理论片 | 国产精品视频一区二区三区四区五区 | www.99热视频| av在线一区二区三区 | 欧美一级三级在线观看 | 成人国产精品一区二区毛片在线 | 伊人yinren22综合网色 | 人成免费网站 | 亚洲情av | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | h色网站免费观看 | 一区二区三区日韩精品 | 中文字幕在线亚洲精品 | 国产精品9191| 色妞视频男女视频 | 毛片福利|