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