本來認(rèn)為Hibernate是不用SQL的,事實也是這樣,但是我們還是需要學(xué)習(xí)一套新的QL,不過它叫HQL。
相比較SQL而言,Hibernate更為的面向?qū)ο螅厦嫦驅(qū)ο蟮亩x。
而SQL則需要在數(shù)據(jù)庫的兼容問題上不斷的標(biāo)準(zhǔn)化。否則,我想不同數(shù)據(jù)庫標(biāo)準(zhǔn)的SQL的兼容始終是在底層數(shù)據(jù)存儲架構(gòu)方面的一個難題。
相對 于Criteria而言,HQL在面向?qū)ο蠓矫嬉d于前者,但是由于官方的推崇標(biāo)準(zhǔn),HQL是我們主要研究的對象。就個人感覺 Criteria更為好用。就像我們更習(xí)慣應(yīng)用:PreparedStatement語句一樣.
不過從今天開始我們要學(xué)習(xí)一種新的QL--HQL。
先從它的實體查詢說起吧。之所以是實體查詢就是因為它是對POJP實體類而言的,它們又對應(yīng)著數(shù)據(jù)庫表。因此叫他實體查詢,實際上就是在查詢數(shù)據(jù)庫表。但是它的查詢要看實體類的情況,它可能包括繼承的子類,如果想使用父類實體的查詢的話我們很可能也會查出相關(guān)的子類表的數(shù)據(jù)。
HQL = "from Tuser "
以及HQL = "from org.hibernate.Tuser"等都是等價的。
而后者則是面向?qū)嶓w類而言的,前者則是面向數(shù)據(jù)表。它就相當(dāng)于“Select... from Tuser"
有一點要注意HQL是無關(guān)大小寫的,但是當(dāng)涉及到類及相關(guān)的屬性的時候
一定要注意大小寫的。
同時還要注意:就是相關(guān)實體的繼承問題。
如果TUser類下面有兩個子類TSysUser,TAdminUser,那么當(dāng)我們用上面的查詢語句去查詢的時候也會把相關(guān)的子類表的信息查出來。這一點一定要牢記。
AS,WHERE子句及相關(guān)查詢比較操作符的使用。
同SQL一樣,HQL當(dāng)中也有AS,Where子句的使用,同時AND子句,及其相關(guān)的查詢條件的比較操作符都存在。使用情況情況大致與SQL一樣。因此掌握SQL使用的用戶在學(xué)習(xí)起來應(yīng)訪相對 的簡單。
"from Tuser as user where user.age ="20" and sex="0" "
相關(guān)操作符也可以使用:<,<=,>,>=,<>,bewtten, in,not bewtten,is ,not in,like等
posted on 2006-07-24 10:46
水煮三國 閱讀(999)
評論(0) 編輯 收藏