论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
【数据库相关】Hibernate对多表关联查询
 作者:佚名     2007-3-14 17:29:08        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

一、 Hibernate简介Hibernate是一个JDO工具。它的工作原理是通过文件(一般有两种:xml文件和properties文件)把值对象和数据库表之间建立起一个映射关系。这样,我们只需要通过操作这些值对象和Hibernate提供的一些基本类,就可以达到使用数据库的目的。例如,使用Hibernate的查询,可以直接返回包含某个值对象的列表(List),而不必向传统的JDBC访问方式一样把结果集的数据逐个装载到一个值对象中,为编码工作节约了大量的时间。Hibernate提供的HQL是一种类SQL语言,它和EJBQL一样都是提供对象化的数据库查询方式,但HQL在功能和使用方式上都非常接近于标准的SQL.

    二、 Hibernate与JDBC的区别Hibernate与JDBC的主要区别如下:

    1、 Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,从某种意义上来说,Hibernate在任何场合下取代JDBC. 

    2、 Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。

    3、 Hibernate是做为JDBC的替代者出现的,不能用来直接和Entity Bean做对比。

    三、 Hibernate 进行多表关联查询Hibernate对多个表进行查询时,查询结果是多个表的笛卡尔积,或者称为“交叉”连接。 例如:from Student, Book from Student as stu, Book as boo from Student stu, Book boo注意:让查询中的Student和Book均是表student和book对应的类名,它的名字一定要和类的名字相同,包括字母的大小写。别名应该服从首字母小写的规则是一个好习惯,这和Java对局部变量的命名规范是一致的。

    下面列举一个完整的例子来说明Hibernate对多个表进行关联查询(其中粗体是我们要特别注意的地方,相应表tBookInfo和BookSelection的结构和其对应的hbm.xml、class文件就不一一列举了,有需要详细了解的朋友,请联系我):

String sTest = "from tBookInfo book, BookSelection sel where book.id = sel.bookId"; 
Collection result = new ArrayList(); 
Transaction tx = null; 
try { 
Session session = HibernateUtil.currentSession(); 
tx = session.beginTransaction(); 
Query query = session.createQuery(sql); 
result = query.list(); 
tx.commit(); 
} catch (Exception e) { 
throw e; 
} finally { 
HibernateUtil.closeSession(); 

ArrayList sList = (ArrayList) result; 
Iterator iterator1 = sList.iterator(); 
while (iterator1.hasNext()) { 
Object[] o = (Object[]) iterator1.next(); 
tBookInfo bookInfo = (tBookInfo) o[0]; 
BookSelection bookSelect = (BookSelection) o[1]; 
System.out.println("BookInfo-Title: " + bookInfo.getTitle()); 
System.out.println("BookSelection-BookSelectionId: " + bookSelect.getId()); 


责任编辑:lss
  相关新闻
程序员考试:数据结构笔记
《数据结构》(严蔚民)配套纯C代码下载
数据库之——Hibernate实现级联删除
数据库系统工程师:数据库原理各章节简答题总结
2006年9月23日计算机等级考试三级数据库标准试卷
【JAVA基础】JDBC连接DB2数据库详解
Oracle下调数据库许可价格 以适应多芯CPU
Oracle数据仓库查询优化技术
2006年软考程序员数据结构复习笔记
如何有效管理Exchange的数据管理
三级数据库备考经验——三级,并不难
程序员考试:数据结构笔记
《数据结构》(严蔚民)配套纯C代码下载
计算机硬件\数据结构\标准化考试模块指导
2006年软考程序员数据结构复习笔记
《数据结构(C++)》学习辅导系列:序言
《数据结构(C++)》学习辅导系列:栈和队列
《数据结构(C++)》学习辅导系列:队列应用
数据库系统工程师:NBU备份ORACLE时Code 29错误
数据库系统工程师:数据库原理各章节简答题总结
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号