博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原创]java WEB学习笔记91:Hibernate学习之路-- -HQL 迫切左外连接,左外连接,迫切内连接,内连接,关联级别运行时的检索策略 比较。理论,在于理解...
阅读量:5103 次
发布时间:2019-06-13

本文共 1753 字,大约阅读时间需要 5 分钟。

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.HQL (迫切)左外连接 推荐使用

  1)LEFT JOIN FETCH 关键字表示迫切左外连接检索策略.  

  2)list() 方法返回的集合中存放实体对象的引用, 每个 Department 对象关联的 Employee 集合都被初始化, 存放所有关联的 Employee 的实体对象.

  3)查询结果中可能会包含重复元素, 可以通过一个 HashSet 来过滤重复元素

     去重:    

@Test    public void testLeftJoinFetch(){        String hql = "SELECT DISTINCT d FROM Department d LEFT JOIN FETCH d.emps";   //使用distinct 关键字去重        String hql2 = "FROM Department d LEFT JOIN FETCH d.emps";        Query query = session.createQuery(hql2);                List
depts = query.list(); depts = new ArrayList<>( new LinkedHashSet(depts)); //使用转化去重 System.out.println(depts.size()); }

 

  

 

2.左外连接

  1)LEFT JOIN 关键字表示左外连接查询. 

  2)list() 方法返回的集合中存放的是对象数组类型

  3)根据配置文件来决定 Employee 集合的检索策略.

  4)如果希望 list() 方法返回的集合中仅包含 Department 对象, 可以在HQL 查询语句中使用 SELECT 关键字

 

 

3.HQL (迫切)内连接

  1)INNER JOIN FETCH 关键字表示迫切内连接, 也可以省略 INNER 关键字

 

  2)list() 方法返回的集合中存放 Department 对象的引用, 每个 Department 对象的 Employee 集合都被初始化, 存放所有关联的 Employee 对象

 

4.内连接:

 

  1)INNER JOIN 关键字表示内连接, 也可以省略 INNER 关键字

  2)list() 方法的集合中存放的每个元素对应查询结果的一条记录, 每个元素都是对象数组类型

  3)如果希望 list() 方法的返回的集合仅包含 Department 对象, 可以在 HQL 查询语句中使用 SELECT 关键字

 

5.关联级别运行时的检索策略

 

  1)如果在 HQL 中没有显式指定检索策略, 将使用映射文件配置的检索策略. 

  2)HQL 会忽略映射文件中设置的迫切左外连接检索策略, 如果希望 HQL 采用迫切左外连接策略, 就必须在 HQL 查询语句中显式的指定它

  3)若在 HQL 代码中显式指定了检索策略, 就会覆盖映射文件中配置的检索策略

 

转载于:https://www.cnblogs.com/jasonHome/p/5935210.html

你可能感兴趣的文章
分享一款在线less转css的神器
查看>>
pandas把'<m8[ns]'类型转换为int类型进行运算
查看>>
判断一个字符串(str)是否以指定的字符串(target)结尾。 如果是,返回true;如果不是,返回false。...
查看>>
控制台编程基础总结
查看>>
Guava CaseFormat
查看>>
第一个C#程序
查看>>
第六次作业-----抽奖系统
查看>>
Message讲解
查看>>
Python3 OOP(一) 类和实例
查看>>
MySQLdb 1031 Error
查看>>
部门开始做技术talk
查看>>
英语-180709
查看>>
函数的参数,参数为数组
查看>>
奚恺元《别做傻瓜做的事》
查看>>
python 面向对象
查看>>
分享网页加载速度优化的一些技巧?
查看>>
小特效【较完善的滑动下拉菜单】【购物车加减器】
查看>>
【读书笔记】【独立思考】2018-04-03(2)
查看>>
java 实现好看的图形验证码
查看>>
字符串_KMP算法(求next[]模板 hdu 1711)
查看>>