1 / 3
文档名称:

NHibernate HQL.doc

格式:doc   页数:3
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

NHibernate HQL.doc

上传人:智客网 2011/12/27 文件大小:0 KB

下载得到文件列表

NHibernate HQL.doc

文档介绍

文档介绍:NHibernate Step by Step (四)Session、Query及HQL
日期:2007年04月10日 来源:BLOG 作者:abluedog 添加:伊扬得分: 难度:
NHibernate Step by Step (四)Session、Query及HQL
我们总结一下在第二篇中的Session操作:
1.  获取记录
Person person = (Person)(typeof(Person),1);
 
2.  保存记录
(person);
 
3.  删除记录
Person person = (Person)(typeof(Person),1);
(person);
我们再来看看其它几种方式:
1.  Load
Person person = (Person)(typeof(Person),1);
是不是感觉和Get一样?其实……很不一样!
Get在找不到对象时会返回一个null引用,而Load则会抛出一个ObjectNotFoundException,所以,不应该用Load来判断记录是否存在。另外还有两条非常重要的区别,我们将放在高级话题讨论。
2.  Query
IList list = (“from Person”).List();
Person person = (Person)list[0]; 
~!#@^?? from Person??#$@*&^$
这是虾米??
好象有点象SQL,不过少了个select啊!而且也没有表名啊!
这就是久负盛名的HQL——Hibernate Query Language!
HQL实际上是基于对象查询的一种仿SQL脚本,在运行期间,Hibernate会自动根据映射关系将之转换为真正的SQL语句来执行。
什么?又一种SQL?不是说使用O/R Mapping就可以不写SQL了吗,怎么又多了一种“SQL”??
当然不是这样了,之所以产生HQL,就是为了能够更加灵活更加面向对象地操作数据,而且你不应该把HQL当成一种新的SQL,因为它——太简单好学了!
看看下面的HQL,是不是很熟悉??
select from Person as p where =1
select Name from Person where Age>20
select Id,Name from Person where Id>1 and Age>20
(从这里开始,我们给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”,当然也就是只取