一路拾遗
Collect By Finding All The Way ......
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 81,comments - 41,trackbacks - 0
<
2008年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
我的博客开张啦!欢迎大家多多来踩!
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔档案
2010年9月 (1)
2010年6月 (2)
2010年5月 (5)
2009年12月 (4)
2009年11月 (3)
2009年10月 (2)
2009年8月 (2)
2009年7月 (4)
2009年6月 (5)
2009年5月 (1)
2009年4月 (2)
2008年12月 (2)
2008年11月 (1)
2008年10月 (1)
2008年9月 (4)
2008年8月 (12)
2008年7月 (30)
文章档案
2008年12月 (1)
相册
毕业照
搜索
积分与排名
积分 - 64142
排名 - 822
最新评论
1. re: myeclipse开发hibernate应用程序示例[未登录]
真的好好...
--云
2. re: myeclipse开发hibernate应用程序示例
做得很认真,顶一个
--~!
3. re: myeclipse开发hibernate应用程序示例[未登录]
not bad
--1
4. re: myeclipse开发hibernate应用程序示例
类名一定要大写,hibernate版本要小于4才行!!!!!!
--第三方
5. re: myeclipse开发hibernate应用程序示例
有错误啊
--第三方
阅读排行榜
1. myeclipse开发hibernate应用程序示例(15645)
2. 使用AXIS调用WSDL描述的Web服务(9674)
3. 使用AXIS调用WSDL描述的Web服务(续)(6033)
4. 基于RemoteObject方式的Java-Flex交互(USING LCDS)(2677)
5. Java WebService注册中心JUDDI配置方法(2192)
评论排行榜
1. myeclipse开发hibernate应用程序示例(16)
2. 使用UDDI4J连接JUDDI(10)
3. 使用AXIS调用WSDL描述的Web服务(续)(5)
4. 使用AXIS调用WSDL描述的Web服务(3)
5. 找实习的伤心事(2)
Hibernate对多表关联查询
由于项目的需要,我对Hibernate对多表关联查询研究了一下,现总结如下,供朋友参考。
一、 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());
}
posted on 2008-07-25 21:56
胖胖泡泡
阅读(249)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理