本来认为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
水煮三国 阅读(996)
评论(0) 编辑 收藏