- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate实验(四):HQL应用编程
姚远
2012-10-13
最后更新时间:2012-10-23
实验目的:
熟练掌握Eclipse中数据源的配置。
熟练掌握Hibernate配置、理解配置文件内容。
熟悉掌握反向工程的概念,并能完成反向工程的相关ORMapping操作。
熟悉应用Hibernate架构技术完成基本数据库应用项目开发。
进一步强化采用分层模式的软件开发。
实验内容:
在开发以”SQL语句”为核心的数据库访问系统中,常见编写的SQL语句如insert、update、delete等相关语法要求掌握得非常灵活、丰富;select查询、子查询等和CRID语句大量结合,对于开发人员SQL技术应用的要求较高。
使用了ORmapping 技术后,虽然HQL也提供了非常丰富的语言特性,但如果完全类似使用“SQL”来使用HQL,则失去了面向对象开发的精髓。从此角度来说,在开发中无论是学习、应用、还是掌握HQL都相对比SQL要容易得多。还要清楚的一点是,在校学生SQL的水平要比想象中还要低很多。
如果使用Hibernate进行SQL查询,则更加背离使用ORmapping技术的初衷。
HQL(Hibernate Query Language, Hibernate 查询语言)提供了丰富灵活的查询特性, Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。TeacherManager类中,增加1个方法:viewSingleTeacher
具体源码如下:
public Teacherinfo viewSingleTeacher(String tno) {
SessionFactory myfactory = util.HibernateUtil.getSessionFactory();
Session session = myfactory.getCurrentSession();
Transaction mytransaction = session.beginTransaction();
try{
Query query = session.createQuery(from Teacherinfo where tno=:tno);
query.setParameter(tno,tno);
Teacherinfo newteacher =
(Teacherinfo) query.uniqueResult();//确定返回的结果只有一个对象或者为null时候采用uniqueResult方法。
mit();
if(newteacher == null){
throw new Exception(没有找到相应的记录。);
}
else return newteacher;
}catch(Exception ex){
mytransaction.rollback();
return null;
}
}
在TeacherManager类的main方法中测试上述代码的功能。
研究该代码
打开HQL Editor窗口
在下列窗口中点击HQL快捷按钮
在编辑区域中输入HQL语句:
一般形式:from 实体名
例:from Teacherinfo
返回Teacherinfo的所有实例(对象)
例:from Teacherinfo as t
返回Teacherinfo的所有实例(对象),t是别名。一般别名的开头部分小写
可以看到结果是5个对象,注意:此处不能理解为SQL中的5条记录,更不要与SQL语句执行后的显示结果混为一谈。
继续完成如下编码:
编写HQL语句,要求输出编号为00001的学生对象
二、联合查询
在实际应用中,如果某个查询结果要求来自不同的对象,则
在数据库设计上,要求这些表和表之间应是一对多(一对一)等的联系,也即是要給相应的表设计外键。
在反向工程映射时,会生成(出现)更为复杂的映射文件信息与实体类
在基于HQL的对象查询与结果获取上也相对复杂起来。
HQL查询语句可以有很多变化形式的语法来实现达到上述要求,但核心目的在于“取得来自不同实体对象中的数据”。
围绕下述具体应用要求作为实例进行HQL查询编程开发:
具体应用要求为:一个教师有不同的标签(一个标签可以应用于不同的教师)
如:
给予“张三”老师的标签是“伪清新很一般很一般随大流不自信”业务”数据):
表设计完毕后,在eclipse中进行相关配置,再编写并学会使用HQL Editor运行测试HQL语句的正确与
文档评论(0)