`
xp9802
  • 浏览: 1202853 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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对多个表进行关联查询(其中粗体是我们要特别注意的地方,相应表BookInfo和BookSelection的结构和其对应的hbm.xml、class文件就不一一列举了,相信大家一定知道如何做!)

String squery= "from BookInfo 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(squery); 
 result = query.list(); 
 tx.commit(); 
} catch (Exception e) { 
 throw e; 
} finally { 
 HibernateUtil.closeSession(); 
} 
ArrayList rstList = (ArrayList) result; 
Iterator itrtr= sList.iterator(); 
while (itrtr.hasNext()) { 
 Object[] bj = (Object[]) itrtr.next(); 
 BookInfo bookInfo = (BookInfo)obj[0]; 
 BookSelection bookSelect = (BookSelection)obj[1]; 
 System.out.println("BookInfo-Title: " + bookInfo.getTitle()); 
 System.out.println("BookSelection-BookSelectionId: " + bookSelect.getId()); 
} 

 

3
0
分享到:
评论
4 楼 wufeipeng2001 2012-02-11  
这是个单纯的查询,后面不需要加commit吧?
3 楼 ben.meng 2012-02-11  
如果不加这个呢?where book.id = sel.bookId
2 楼 yushl 2012-02-10  
这。。。。。。。。。
1 楼 kimifdw 2012-02-10  
很不错 感谢LZ

相关推荐

    hibernate多表联合查询

    ### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。

    Hibernate 多表连接分页查询示范项目

    总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...

    Hibernate连表查询 Hibernate连表查询

    根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    hibernate多对多查询

    本篇文章将聚焦于Hibernate中的多对多查询,这是一个复杂但常见的数据关联问题。 首先,我们需要理解关系数据库中的多对多关系。在现实生活中,很多关系都呈现出多对多的特性,例如学生与课程之间的关系,一个学生...

    Hibernate基于连接表的一对多单向关联

    在上述代码中,我们使用了注解`@ManyToOne`和`@JoinColumn`来声明`Address`类中的`person`字段是一个多对一的关联,并指定了外键列的名称。 3. 数据库表结构:`personAdd.sql`可能包含了创建`Person`和`Address`表...

    Hibernate多对多关联添加及查询示例

    本示例主要关注的是Hibernate中的多对多关联映射及其添加与查询方法。 多对多关联是数据库设计中的一种常见关系类型,指的是两个实体之间可以存在多个对应关系。例如,在学生与课程的关系中,一个学生可以选修多门...

    hibernate多表查询详解

    对象方式的查询是Hibernate的一大特色,它通过建立实体类间的关联关系来实现多表查询。这种方式更加面向对象,易于理解和维护。例如,如果Table1和Table2存在一对多关系,我们可以在Table1的实体类中定义一个Table2...

    hibernate 多表关联 中间表

    通过以上步骤,我们就能在Hibernate中有效地管理多对多关联,并利用中间表实现复杂的数据操作。理解并熟练掌握这些知识,对于任何Java开发人员来说都是非常有价值的,特别是在大型企业级应用中,这种关联映射的使用...

    hibernate多对一关联demo

    【标题】:“Hibernate多对一关联demo” 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作。本教程将详细解释如何在Hibernate中实现多对一的关联关系,以及如何通过一个实际的示例...

    hibernate 进行多表查询每个表中各取几个字段

    在Hibernate中,多表查询通常涉及到关联关系的映射,包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。通过这些关联,我们可以实现JOIN操作来获取多个表的数据。 1. 关联...

    Hibernate ORM - 多对多双向连接表关联关系

    本文将深入探讨Hibernate ORM中的一个关键概念——多对多双向连接表关联关系。这种关联关系在实际业务场景中非常常见,比如用户与角色、课程与学生等例子,都需要用到多对多的关系来描述它们之间的复杂联系。 首先...

    hibernate代码优化基于配置的多表查询

    本文将深入探讨如何通过配置优化Hibernate的多表查询,以提高应用的性能。 1. **联合查询优化**: 在进行多表查询时,Hibernate默认可能会生成多个单表查询,这会导致大量的数据库往返,降低效率。通过配置`@Join...

    hibernate多对多双向关联

    10. **最佳实践**:如避免过多的中间表查询,合理设计关联关系,以及在不必要时选择一对一或一对多替代多对多等。 总结来说,理解并能正确使用Hibernate中的多对多双向关联是Java开发中的重要技能,涉及到实体设计...

    hibernateHQL关联查询

    在理解Hibernate HQL关联查询之前,我们需要先回顾一下数据库表连接的基本概念及其分类。数据库表连接主要分为以下几种: 1. **内连接(Inner Join)**:只返回两个表中满足连接条件的记录。如果某条记录在另一个表...

    hibernate多对多关联映射(单项关联)

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系模型,它用于处理两个实体类之间存在多个对应关系的情况。这篇博客"hibernate多对多关联映射(单项关联)"深入探讨了如何在Hibernate中实现这种映射...

    hibernate多对一单向关联关系实现源码

    以上就是关于Hibernate中实现多对一单向关联关系的基本知识,包括如何在实体类中定义关联、如何进行数据库操作以及如何查询关联对象。这个源代码示例应该提供了更具体的实现细节,你可以通过查看和运行它来深入理解...

    Hibernate(多对多表操作)

    在Hibernate中,实现多对多关系需要通过关联表(也称为中间表或连接表)来完成。这个关联表通常包含两个外键,分别对应于两个参与关系的实体。以下是一个具体的步骤详解: 1. **定义实体类**:首先,为参与多对多...

    hibernate实现多对多关联关系源码

    在Hibernate中,多对多关联通常通过中间表或关联表(association table)来实现,这个表包含两个实体的主键作为外键。以下是实现多对多关联关系的关键步骤: 1. **定义实体类**:首先,为涉及多对多关联的两个实体...

Global site tag (gtag.js) - Google Analytics