1. 獲取記錄
2. 保存記錄

3. 刪除記錄





我們再來看看其它幾種方式:
1. Load

是不是感覺和 Get 一樣?其實……很不一樣!
Get 在找不到對象時會返回一個 null 引用,而 Load 則會拋出一個 ObjectNotFoundException ,所以,不應該用 Load 來判斷記錄是否存在。另外還有兩條非常重要的區別,我們將放在高級話題討論。
2. Query



~!#@^?? from Person??#$@*&^$
這是蝦米??
好象有點象 SQL ,不過少了個 select 啊!而且也沒有表名啊!
這就是久負盛名的 HQL —— Hibernate Query Language!
HQL 實際上是基于對象查詢的一種仿 SQL 腳本,在運行期間, Hibernate 會自動根據映 射關系將之轉換為真正的 SQL 語句來執行。
什么?又一種 SQL ?不是說使用 O/R Mapping 就可以不寫 SQL 了嗎,怎么又多了一種 “ SQL ”??
當然不是這樣了,之所以產生
HQL
,就是為了能夠更加靈活更加面向對象地操作數據
,而且你不應該把
HQL
當成一種新的
SQL
,因
為它——太簡單好學了!
看看下面的 HQL ,是不是很熟悉??





認出來老兄弟了吧!!
(從這里開始,我們給 person 表添加了一個 age 列,請注意)
ok ,我們這里就詳細解釋。
“from Person ” 意思是取出 Person 類映射的 person 表中的所有記錄,對應的 SQL 是:
“ Select * from person”
還可以加上別名: from Person (as) p = Select * from person (as) p
這樣一解釋就很清楚了吧!一句話,你便已經掌握了 HQL 的 50% !
而“ select Name from Person” ,當然也就是只取 person 表的 name 列了!
你所知道的 where 中的 and 、 or 、 is 、 like 、 between 、 > 、 < 、 = 等等都可以直接拿來使用,
如下:









注意:字段大小寫應該盡量跟屬性名稱保持一致,尤其是在使用別名的情況下,如:
p.age
將會導致一個“無法解析屬性
age
“的錯誤。但是在不使用別名的情況下我的機器
上”
age
“和
’Age
“一樣可以通過,雖然如此,
建議還是跟類文件保持一致。
執行 HQL 是通過 IQuery 來實現的,如下是詳細的寫法:



通過
session
來創建一個
query
,然后執行
query
的
List
方法,返回符合條件的
IList
。
如上面的“ from Person “,將返回 person 表的所有記錄, list 中將包含映射到 Person 類
的對應表中所有記錄的對象。
好了,這一篇就講這么多,我們下次再接著練習。
任何建議或者批評,請
e
:
abluedog@163.com
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
