检索策略 lasy、fetch
检索:就是把数据库的数据加载到内存的过程。
检索策略的方式:
1.立即检索(立即加载)
2.延迟检索(延迟加载)
检索策略的应用:
1.类级别上的应用 (get方法和load方法)
Get方法 vs load方法区别:
1.get方法在检索数据的时候,不管class元素是否lasy设置为true还是fale,都是立即检索
2.Laod方法在检索数据的时候,class元素lasy设置成true,延迟检索,并且产生的对象类型是一个代理类型,如果class元素lasy设置成false,立即检索,产生对象类型是一个普通po类型对象
3.、get方法和load都是类级别上的检索的应用方式
4.对应类级别上的检索,一般就定为立即加载方式
2.集合级别上的应用
在检查某个对象的时候,如果该对象有关联的数据,可以决定是否延迟或者立即加载关联的数据
Lasy(是否懒加载) | Fetch(生成sql语句样子) | 结果 |
false | Select(默认就是select) | 同时查询主表和关联表数据 |
true | select | 先查询主表信息,都是在使用集合的时候,才发出去sql查询关联表信息 |
true | join | 在查询主表的时候,发出连接sql语句,lasy无效 |
false | join | |
true | subselect | 先查主表,在使用集合的时候才发出sql语句去查询相关数据 |
false | subselect | 先查主表,然后把主表的id作为子查询条件去查询关联表 |