学习之路-抓取策略
来源:互联网 发布:png转ico软件 编辑:程序博客网 时间:2024/06/06 15:51
一、什么是抓取策略
*Hibernate如何获取主体对象的关联属性的策略。
*抓取策略可以在ORM映射文件中声明,也可以在特定的HQL 或条件查询(Criteria Query)中重载声明
二、分类
*查询抓取(fetch=“select”)
当关联属性为延迟加载时,如需加载将另外发送一条SELECT语句抓取当前对象的关联实体或集合。
<many-to-one name="dept" class="Dept" fetch="select"> 默认为select,有join可选
测试代码:
Employee emp=(Employee)session.get(Employee.class, 1001);
Dept dept=emp.getDept();
System.out.println(dept.getDept_name());
注:上述代码中,当调用get方法时,发送一条查询emp的sql语句,而关联属性Dept没有加载出来,即没有发送sql语句查询,当我调用Dept的非主键属性时发送了一条sql语句查询Dept。
*连接抓取(fetch=“join”)
当在关联属性映射中将fetch设置为join时,在执行get()和load()方法时Hibernate会通过内连接立即获取关联属性。此时会导致关联属性的延迟加载失效(仅仅针对get和load方法,对HQL和Criteria无效)。
<many-to-one name="dept" class="Dept" fetch="join"> 默认为select,有join可选
测试代码:
Employee emp=(Employee)session.get(Employee.class, 1001);
Dept dept=emp.getDept();
System.out.println(dept.getDept_name());
Hibernate:
select
employee0_.e_no as e_no1_1_0_,
employee0_.e_name as e_name2_1_0_,
employee0_.e_gender as e_gender3_1_0_,
employee0_.e_job as e_job4_1_0_,
employee0_.e_salary as e_salary5_1_0_,
employee0_.hireDate as hireDate6_1_0_,
employee0_.dept_no as dept_no7_1_0_,
dept1_.d_no as d_no1_0_1_,
dept1_.d_name as d_name2_0_1_,
dept1_.d_location as d_locati3_0_1_
from
EMPLOYEE employee0_
left outer join
DEPT dept1_
on employee0_.dept_no=dept1_.d_no
where
employee0_.e_no=?
*子查询抓取(fetch=“subselect”)
当获取集合关联属性时,另外发送一条查询语句或者子查询语句抓取集合关联属性。此设置针对HQL语句同样有效。
<set name="emp" inverse="true" fetch="subselect"> fetch默认为select,还有join、subselect可选
测试代码:
Dept dept=(Dept)session.get(Dept.class, 10);
Set<Employee> emps=dept.getEmp();
int count=emps.size();
注:上述代码中,当我调用size方法时,发送一条sql语句查询主题对象的关联属性Set
*批量抓取(batch-size="")
- 学习之路-抓取策略
- Hibernate检索策略学习之--预先抓取
- hibernate抓取策略学习
- Hibernate之抓取策略
- Hibernate学习之抓取策略与懒(延迟)加载
- Hibernate学习---第十二节:Hibernate之数据抓取策略&批量抓取
- Hibernate学习41 -- 抓取策略1 -- 连接抓取
- Hibernate学习42 -- 抓取策略2 -- 查询抓取
- Hibernate学习43 -- 抓取策略3 -- 子查询抓取
- Hibernate学习手记(8) - 抓取策略
- Hibernate系列之(1) 抓取策略
- 抓取策略
- 抓取策略
- hibernate之优化抓取(选择抓取策略之批量预抓取数据)
- hibernate之优化抓取(选择抓取策略之批量预抓取数据--实例1)
- hibernate之优化抓取(选择抓取策略之批量预抓取数据--实例2)
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合)
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合--实例)
- js初探
- C# DateTime与时间戳转换
- 博弈论
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F题 Overlapping Rectangles(线段树)
- 图像分割算法之 Graph Cut
- 学习之路-抓取策略
- bash
- java基础面试题
- 坦克小作战 js版(未完工)
- 7-29 修理牧场(25 分)
- 进制的转换
- 内核空间与用户空间的通信方式
- js比较器组件Comparator.js
- interleaving-string