下午11hibernate多表关联数据查询_第1页
下午11hibernate多表关联数据查询_第2页
下午11hibernate多表关联数据查询_第3页
下午11hibernate多表关联数据查询_第4页
下午11hibernate多表关联数据查询_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京传智播客教育 Hibernate多表关联数据查询李 若 亮北京传智播客教育 Hibernate多表数据查询方式Hibernate共提供4种多表关联数据查询方式OID数据查询+OGN数据查询方式HQL数据查询方式QBC数据查询方式本地SQL查询方式北京传智播客教育 OID数据查询+OGN数据查询方式前提:已知被关联数据对应的对象OID查询:基于OID,使用get/load方法查询对应的数据作用:使用OID获取数据,使用OGN获取关联数据操作步骤:使用OID获取对应的模型数据A使用模型数据A通过OGN格式,获取关联数据对象B或关联数据集合C的数据北京传智播客教育 HQL数据查询方式前提:已知要

2、进行查询的数据结构和条件查询:基于Query对象,完成HQL语句的查询,得 到查询结果作用:基于HQL语法规则,查询对应的数据北京传智播客教育 QBC数据查询方式前提:已知要进行查询的数据结构和条件查询:基于Criteria对象,完成面向对象的查询,得 到查询结果作用:基于QBC查询规则,查询对应的数据北京传智播客教育 本地SQL查询方式前提:已知要进行查询的数据结构和条件查询:基于SQL语句,完成查询,得到查询结果作用:基于SQL语法规则,查询对应的数据北京传智播客教育 命名约定在进行多表关联查询时,参与操作具有实际业务数据的数据库库表存在至少两个A关联B,B关联C的情况属于当前情况的扩展多

3、对多中,关联关系表中未保存实际业务数据,不在讨论范围内现对关联关系中的数据进行命名约定A到B的一对多,多对多,一对一主(表)数据:直接通过查询获得的A数据主关联数据:获取A数据后,对应对象内B数据(对象或集合)从(表)数据:直接通过查询获取的B数据从关联数据:获取B数据后,对应对象内A数据(对象或集合)北京传智播客教育 Query实体参数查询编号为1的老师的所有学生在使用参数设定时,参数只能赋值给指定的查询属性名称,如果参数的属性不是基本数据类型的封装类,而是对象,那么此时需要如何进行赋值?from StudentModel where teacher = :teacher北京传智播客教育 Q

4、uery实体参数使用传递实体参数的格式完成setEntity方法可以完成对象参数的传递北京传智播客教育 Query实体参数总结setEntity方法要求传入的参数必须是PO或DO在进行关联查询时,如果查询从表数据,而传入对应的主表参数,此时由于关联关系是基于OID建立的,因此查询只使用OID作为参考依据,所以参数必须携带OID(PO/DO)上述操作也可通过setParameter完成北京传智播客教育 Criteria实体参数查询教师编号为1的所有学生使用实体参数进行参数传递北京传智播客教育 Criteria实体参数查询教师“李若亮的所有学生”hibernate认为teacher.teacher

5、Name是一个整体的属性名使用别名引用teacher.teacherName使用别名t表示StudentModel类中的被关联的属性teacher,然后进行对象图导航格式进行条件设置别名的定义是为了关联到对应的对象北京传智播客教育 Criteria实体参数使用传递实体参数的格式完成上例传递的参数是瞬时对象,无法进行关联Criteria关联传递实体参数必须具有OID查询成功,但是忽略了OID之外的属性北京传智播客教育 Criteria实体参数总结Criteria传入的实体参数必须是PO或DO在进行关联查询时,如果查询从表数据,而传入对应的主表参数,此时由于关联关系是基于OID建立的,因此查询只使

6、用OID作为参考依据,所以参数必须携带OID(PO/DO)Criteria传入实体参数只读取OID属性,其余忽略可以使用别名的方式进行OID之外属性的查询,但是一次只能设定一个条件北京传智播客教育 多态查询查询时Hibernate提供的一种兼容性多态查询方式,由于查询结果数据量不易控制,很少使用(不常用)多态查询的数据结果为所有查询类型的子类对象多态查询时,如果查询的数据类型在配置文件中进行了注册,可以省略包名多态查询支持Query查询与Criteria查询北京传智播客教育 多表关联查询(重点)多表关联查询是指一次查询同时获取查询数据与被关联的查询数据多表关联查询分为两种形式查询主数据和主关联

7、数据查询从数据和从关联数据注意:在进行多表关联查询时,数据要求主表与从表必须都存在未被关联的数据才能测试其关联查询效果北京传智播客教育 Query多表关联查询使用HQL语句实现多表联合查询共7种方式Hibernate连接方式语法结构SQL支持性实用性内连接inner join支持由业务决定迫切内连接inner join fetch不支持隐式内连接类A不支持左外连接left out join支持迫切左外连接left out join fetch不支持右外连接right out join支持交叉连接类A , 类B支持极少使用北京传智播客教育 Query多表关联查询内连接格式HQL语句实现多表联合查

8、询内连接常用格式内连接“from TeacherModel tm inner join tm.students”迫切内连接“from TeacherModel tm inner join fetch tm.students”隐式内连接“from TeacherModel”北京传智播客教育 Query多表关联查询内连接结论内连接数据总量:从表被关联的数据总量数据模型:主表数据(延迟从) + 从表数据(含主)迫切内连接(数据重复DISTINCT)数据总量:从表被关联的数据总量数据模型:主表数据 (含从)隐式内连接数据总量:主表数据总量数据模型:主表数据(延迟从) 北京传智播客教育 Query多表关

9、联查询外连接格式HQL语句实现多表联合查询外连接常用格式左外连接“from TeacherModel tm left outer join tm.students ”迫切左外连接“from TeacherModel tm left outer join fetch tm.students ”右外连接“from TeacherModel tm right outer join tm.students”北京传智播客教育 HQL多表关联查询结果左外连接数据总量:从表被关联数据总量+主表未关联数据总量数据模型:主表数据(延迟从) ,从表数据 (含主) (主表不存在关联数据的从表数据为0)迫切左外连接(

10、数据重复DISTINCT)数据总量:从表被关联数据总量+主表未关联数据总量数据模型:主表数据(含从) (主表不存在关联数据的从表数据为0)右外连接数据总量:从表被关联数据总量+从表未关联数据总量数据模型:主表数据(延迟从) ,从表数据(含主) (从表不存在关联数据的主表数据为null)北京传智播客教育 迫切连接与非迫切连接区别非迫切连接查询结果非迫切连接查询结果是将关联关系中主表数据与从表中每条数据进行关联,结果包含双方的数据,是两个对象数据总量为从表中被关联数据的总量查询结果:主表对象,从表对象迫切连接查询结果迫切连接查询结果是将关联关系中主表数据与从表中每条数据进行关联,结果只包含主表数据,是一个对象数据总量为从表中被关联数据的总量查询结果:主表对象(从表对象包含在主表对象内部)北京传智播客教育 Query多表关联查询的作用业务:显示所有员工信息业务:显示所有员工信息及其销售记录业务:显示2014年所有销售记录业务:显示所有部门的员工业务:显示2014年入职的所有员工业务:显示单位所有固定资产分配明细业务:显示所有市场部固定资产分配明细业务:显示2014年所有的报销记录北京传智播

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论