本文依旧以Customer类和Order类进行说明.一.引言: Hibernate检索Customer对象时立即检索与之关联的Order对象,这种检索策略为立即检索策略.立即检索策略存在两大不足: A.select语句太多,而且会出现N+1的问题.所谓N+1,1是指先查出所有的Customer集合,N是指针对每个Customer再查询其关联的Order集合.N+1可以通过一条外连接查询语句完成. B.应用逻辑上可能并不需要Order集合,此时加载Order集合浪费内存空间. 为解决上述问题,Hi…
一.检索策略概述 当我们实现了一对多或者多对多的映射后,在检索数据库时需要注意两个问题: 1.使用尽可能小的内存:当 Hibernate 从数据库中加载一个客户信息时, 如果同时加载所有关联这个客户的订单信息, 而程序实际上仅仅需要访问客户信息, 那么这些关联的 订单信息就白白浪费了许多内存. 2.更高的查询效率:发送尽可能少的 SQL 语句. 二.类级别的检索策略(class标签中设置) 类级别可选的检索策略包括立即检索和延迟检索, Hibernate默认采用延迟检索. 类级别的检索策略可以通…
检索策略 5.1.类级别检索策略 5.2.set多对多.一对多检索策略 5.3.多对一.一对一检索策略 HQL作用: http://zhidao.baidu.com/link?url=dnAdJWR7yFN8NYLt0p4NeXiHzN95CUtzvECgqEsVL-npdX6UUR3aAAI0hGFItA1q9YZQ9kpiIZgRPNXugxoESa…
一.概述 我们先来谈谈检索数据时的两个问题: 1.不浪费内存   2.更好的检索效率 以上说的问题都是我们想要避免的,接下来就引出了我们要讨论的话题---------------hibernate检索策略 二.hibernate检索策略分为三种: 1.类级别的检索策略 2.一对多和多对多检索策略 3.多对一和一对一关联的检索策略 (1)类级别的检索策略分为立即检索和延迟检索,默认为延迟检索. 立即检索:立即加载检索方法指定的对象,立即发送SQL. 延迟检索:延迟加载检索方法指定的对象,在使用具体…
一对多关联(多对一): 一对多关联映射: 在多的一端添加一个外键指向一的一端,它维护的关系是一指向多 多对一关联映射: 咋多的一端加入一个外键指向一的一端,它维护的关系是多指向一 在配置文件中添加: 在一一端使用<set><key></key><one-to-many></one-to-many></set> <key>指定的外键字段必须和<many-to-one>指定的外键字段一致 在多一端使用<man…
项目中使用实体之间存在一对多@OneToMany,多对一@ManyToOne的映射关系,怎么设置呢? GitHub地址:https://github.com/AngelSXD/myagenorderdiscount可以查看完整项目 下面给一个例子: 类似于一个部门对应多个员工 这里给出 一个流水账单对应多条订单折扣信息 流水账单类: package com.agen.orderdiscount.entity; import lombok.AllArgsConstructor; import lo…
public class Dept { private int deptId; private String deptName; // [一对多] 部门对应的多个员工 private Set<Employee> emps = new HashSet<Employee>(); public class Employee { private int empId; private String empName; private double salary; // [多对一]员工与部门 p…
本文知识点(目录): 1.Annotation 注解版(只是测试建表)    2.XML版 的实现(只是测试建表)    3.附录(Annotation 注解版CRUD操作)[注解版有个问题:插入值时,外键为null,用xml 版可以解决此问题] 1.Annotation 注解版 1.1.在“一”的一方(Customer类)加@OneToMany:在“多”的一方(Order类)加@ManyToOne 1.2.创建Customer类和Order类 注意:必须在“一”的一方配mappedBy=”XX…
序言 很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要想想,你花费的也就那么一点时间,别人花你这么多时间也能够学到你所学到的东西,所以还是要继续努力.既然不是天才,唯有靠勤奋来弥补. --WH 一.概述 检索策略分三大块,类级别检索策略和关联级别检测策略. 类级别检索策略:get.load. 关联级别检索策略:order.getCustomer().g…
延迟加载:延迟加载(lazy load懒加载)是当在真正需要数据时,才执行SQL语句进行查询.避免了无谓的性能开销. 延迟加载分类:  1.类级别的查询策略 2.一对多和多对多关联的查询策略 3.多对一关联的查询策略 什么情况下使用延迟加载? 如果程序加载一个对象的目的是为了访问它的属性,可以采用立即加载.如果程序加载一个持久化对象的目的是仅仅为了获得它的引用,可以采用延迟加载. 如何配置延时加载? 在Hibernate中通过对.hbm的lazy属性来赋值,不同位置出现lazy的作用和取值也是不…