Hibernate关联查询

gojava 2021-09-05 原文


Hibernate关联查询

  本文由广州疯狂软件java培训分享:

  很多人认为hibernate一旦涉及到多张表查询就很不方便,只能通过原声sql解决,其实不然,hql语句其实已经比较强大了,基本涵盖了sql的60%的功能。我认为用原生sql的场景应该为以下几点情况:

  1. 非常复杂sql(嵌套、临时表、混合语句【update包含select嵌套】)

  2. 某数据库(如oracle)特性函数

  3. 特殊业务sql,即查询出的结果是某种特殊业务含义,并不是po实体类里的字段。例如:select col_1 as business1 , col_2 as business2 from table;(business1并不是table的字段)

  除以上特殊需求外,我建议能用hq就用hql,hql最大的优点,除了能自动映射成po实体类,另一个就是跨数据库的通用性,采用hql语句可以轻松将数据库由mysql改为oracle。

  hql的基础我就不再叙述了,今天我为大家主要介绍多表之间的关联查询。

  1. po之间含有关联关系

  [java] view plaincopy public class Student {

  …

  private Clazz clazz;

  get()…

  set()…

  }

  from Student t inner join t.clazz r where t.sex = \’男\’ and r.name = \’三班\’

  这个语句默认情况下,是懒加载的,如果想一并抓取,则语句为:

  from Student t inner join fetch t.clazz r where t.sex = \’男\’ and r.name = \’三班\’

  hql同样支持left join和right join等关联查询

  2. po之间没有关联关系

  [java] view plaincopy public class Student {

  …

  private String clazzId;

  get()…

  set()…

  }

  select t from Studnent t, Clazz r where t.clazzId = r.id and t.sex = \’男\’ and r.name = \’三班\’

  3. 查询部分字段

  另外有时我们只需要查询po对象里的部分字段,那么怎么查呢?

  select new Student(name, sex) from Student

  但需要注意的是,Student实体类中必须要有参数为name,sex的构造函数。

  4. 统计函数

  支持count()、min()、max()、sum()、avg()等

  select avg(s.age) from Student as s

  5. 去除重复行

  select distinct s.age from Student as s

  6. 综合用法

  举一个典型的例子:分页。用hibernate分页,现在大多数人还是采用两步去做,第一步统计行数,第二步分页查询(目的是计算出总页数),如果想一步完成,多数人还是用sql了,其实hql也能做到。

  select new Student(t.name, t.sex, count(t)) from Sudent t

  在Student实体类中只要有参数为name, sex, rowCount的构造函数即可,rowCount也可以不是数据库里的字段

  通过以上可以看出,某一技术我们有时觉得不方便,只是我们还不够了解它,需要我们更多的仔细去探索和挖掘。

  疯狂软件教育中心依托开发团队的强大技术实力,把企业最新技术融入实训课程,打造金牌的品质,才能给予学员黄金的未来,疯狂软件凭借过硬的技术实力与丰富的项目开发经验,赢得了社会的肯定。疯狂软件Java培训师资力量强大,课程内容深入,为学员高薪就业做了很好的铺垫,拥有丰富就业指导经验的就业团队也成为了学员高薪就业的先天优势。地址:广州天河区车陂沣宏大厦3楼。

发表于
2014-03-15 15:05 
百易城 
阅读(415
评论(0
编辑 
收藏 
举报

 

版权声明:本文为gojava原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gojava/p/3602036.html

Hibernate关联查询的更多相关文章

随机推荐

  1. Hystrix介绍

    Hystrix是什么 在分布式环境中,许多服务依赖项中的一些必然会失败。Hystrix是一个库,通过添加延迟容 […]...

  2. Win10该文件没有与之关联的应用来执行该操作…请在\”默认应用设置\”页面中创建关联

    问题发现:一直使用的一款软件——火柴,这两天忽然发现通过ctrl + 回车快捷键无法进入到文件所在的目录中(之 […]...

  3. 数据恢复顾问(DRA)

    (1)DRA介绍          数据恢复顾问(Data Recovery Advise)是一个诊断和修复数 […]...

  4. Go Goosy Disk Docker Port Provisioners(GDP)

    Go Goosy Disk Docker Port Provisioners(GDP) Posted on 2 […]...

  5. 草稿

    Beautiful Soup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML […]...

  6. XSRF

    介绍 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 释义: 跨站请求攻击,简单地说 […]...

  7. Simditor使用方法 – itmyhome

    Simditor使用方法 一不小心接触到Simditor,瞬间被它优美极简的界面所吸引。Simditor是To […]...

  8. Java环境变量设置(适用于Windows 2000、XP、2003)

    Java环境变量设置(适用于Windows 2000、XP、2003)   首先,从Sun网站上下载jdk,当 […]...

展开目录

目录导航