在持久化类中通过注解设定的检索策略是固定的,要么为延迟检索,要么为立即检索。但应用逻辑是多种多样的,有些情况下需要延迟检索,而有些情况下需要立即检索。

Hibernate允许在应用程序中覆盖持久化类中设定的检索策略,由应用程序在运行时决定检索对象图的深度。

以下代码两次调用Query的getResultList()方法,都用于检索OID为1的Customer对象:

//第一个Query.getResultList()方法
entityManager.createQuery("from Customer as c where c.id=1",Customer.class).getResultList();//第二个Query.getResultList()方法
entityManager.createQuery("from Customer as c"+" left join fetch c.orders where c.id=1",Customer.class).getResultList();

假定在Customer类中,对orders集合属性采用延迟检索策略。在执行第一个Query.getResultList()方法时,将使用Customer类中设置的检索策略。在执行第二个Query.getResultList()方法时,在JPQL语句中显式指定左外连接检索关联的Order对象,因此会覆盖Customer类中设置的检索策略,Hibernate会执行以下select语句:

select * from CUSTOMERS left outer join ORDERS
on CUSTOMERS.ID =ORDERS.CUSTOMER_ID where CUSTOMERS.ID=1;

以上查询语句会立即检索Customer对象,以及和它关联的所有Order对象。

孙卫琴的《精通JPA与Hibernate》的读书笔记:在程序中动态指定立即左外连接检索相关推荐

  1. Hibernate中使用左外连接

    hibernate中的左外连接要怎么设置呢? 很简单:设置fetch属性为EAGER即可.加载策略中:LZAY使用的是inner join:EAGER使用的是left join. @ManyToOne ...

  2. 孙卫琴的《精通JPA与Hibernate》的读书笔记:用orphanRemoval属性映射父子关系

    以下是removeOrderFromCustomer()方法的代码,它先加载一个Customer对象,然后获得与Customer对象关联的一个Order对象的引用,最后解除Customer和Order ...

  3. java逍遥游记 下载_Hibernate逍遥游记 孙卫琴著 PDF下载

    <Java开发专家•Hibernate逍遥游记(附CD-ROM光盘1张)>Hibernate是非常流行的对象一关系映射工具.<Java开发专家•Hibernate逍遥游记(附CD-R ...

  4. GPU 编程入门到精通(三)之 第一个 GPU 程序

    博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴 ...

  5. Hibernate进阶之如何使用Hql内连接,外连接以及自连接

    一.sql语句中的 内连接.自连接和外连接: 1.使用等值连接/内连接查询,查询客户姓名,订单编号,订单价格 等值连接/内连接:只能查询出符合条件的记录: select c.name,o.ordern ...

  6. Hibernate框架--学习笔记(下):hibernate的查询方式、多表查询、检索策略、批量抓取

    一.hibernate的查询方式: 主要有五种:对象导航查询:OID查询:hql查询:QBC查询:本地sql查询. 1.对象导航查询:根据id查询某个客户,再查询这个客户里面所有的联系人. 2.OID ...

  7. 孙卫琴:我为什么要写《Java面向对象编程》

    孙卫琴:我为什么要写<Java面向对象编程> 特约作者:孙卫琴 策划 & 设计 & 制作:李大微 当<精通Struts>和<精通Hibernate> ...

  8. JPA和Hibernate的关系

    转载自:https://www.cnblogs.com/amoyzhu/p/5937717.html JPA Java Persistence API,是Java EE 5的标准ORM接口,也是ejb ...

  9. JPA入门到精通 - JPA入门

    为什么80%的码农都做不了架构师?>>>    概述 自己用JPA很长时间了,但没有系统学习,通过课程自学下平时比较少碰到的内容,并笔记. JPA概述 什么是JPA JPA是Java ...

最新文章

  1. Linux cp命令如何拷贝整个目录下所有文件
  2. Java核心(七):this和super的区别
  3. 设计模式-扩展-父类对子类的要求
  4. liunx系统中的盘符能修改嘛_装系统教程!如何从U盘启动(中)!小白也能变装机大神!...
  5. SSDO AO 图像空间的动态全局光照
  6. linux系统shell知识点,linux shell 知识点
  7. 在一个由小写英文字母(a-z)组成的字符串中,查找最长子串,其头尾字母相同,且中间不包含该头尾字母,并输出最左边的该类子串
  8. Leetcode1512. 好数对的数目 抽出本质原型 利用范围条件
  9. pandas基础知识
  10. Pentium 4处理器架构/微架构/流水线 (11) - NetBurst执行核详解 - Load/Store操作/存储转发
  11. postgres 把一个表的值转成另一个表的字段名_Postgres索引那些事
  12. 【Unity Shaders】Lighting Models —— 灯型号Lit Sphere
  13. PowerDesigner物理模型用法总结
  14. B站 (哔哩哔哩) 泄露源码中的有趣片段(彩蛋)
  15. uni-app cli创建项目打包并配置多环境读取配置文件信息
  16. postman,请求前置脚本,Pre-requests Script
  17. AppNode受控端命令 - AppNode帮助中心
  18. 媒体 | 冒志鸿:理想nine percent最难寻
  19. 0018 求球的表面积和体积
  20. 基于ROS_Arduino室内移动机器人SLAM实验测试

热门文章

  1. 计算机是怎么跑起来的——简记
  2. WEB请求处理二:Nginx请求反向代理
  3. BLAST Database error: No alias or index file found for protein database
  4. vuecli 实现导航切换
  5. vue3的自定义指令directives
  6. directives 引用this
  7. 获取dom元素的方法
  8. 2020ICPR-化妆演示攻击
  9. jQuery获取子类第n个元素
  10. 诺丁汉为满足当地需求新建一个数据中心