1.延迟加载
1>类级别的延迟加载
指的是通过oad方法查询某个对象的时候,是否采用延迟, session. load(Customer class1L)
类级别延迟加载通过<class></class>上的laxy进行配置,如果让lazy失效
<class name="com.work.entity.Customer" table="cst_customer" lazy="true">
◆将lazy设置为 false.
◆将持久化类使用fna修饰
◆ Hibernate. Initialize()方法
2>关联级别的延迟加载
指的是在查询到某个对象的时候,查询其关联的对象的时候,是否采用延迟加载。
Customer customers=session. get( Customer.class, 1L)
customer. getlinkman0()一通过客户获得联系人的时候,联系人对象是否采用了延迟加载,称为是关联级别的延迟。
抓取策略往往会和关联级别的延迟加载一起使用,优化语句。
2.抓取策略的概述
1>抓取策略的通过一个对象抓取到关联对象需硬发送SQL语句,SOL语句如何发送,发送成什么样格式通过策略进行配置。
通过<set>或者< many-to-one>上通过 fetch属性进行设置fetch和这些标签上的lary如何设置优化发送的saL语句
<set>上的 fetch和layfetch
2>fatch抓取策略,控制SOL语句格式:(fatch控制发送语句的格式)
select :默认值,发送普通的 select语句,查询关联对象
join:发送一条迫切左外连接查询关联对象
subselect:发送一条子查询查询其关联对象
3>lazy延迟加载,控制查询关联对象的时侯是否采用延迟(lazy控制的是发送语句的时间)
true:默认值,查询关联对象的时候,采用延迟加载
false:查询关联对象的时候,不采用延迟加载
extra:及其懒情。(用到什么数据查询什么数据)
<---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
<many-to-one>上的 fetch和layfetch
1>fatch抓取策略,控制SOL语句格式:(fatch控制发送语句的格式)
select :默认值,发送普通的 select语句,查询关联对象
join:发送一条迫切左外连接查询关联对象
2>lazy延迟加载,控制查询关联对象的时侯是否采用延迟(lazy控制的是发送语句的时间)
proxy:默认值,proxy的值取决于另一端<classs>lazy=""</class>lazy的值
false:查询关联对象的时候,不采用延迟加载
在开发中一般使用默认值:特殊情况下可能使用join
3.批量抓取策略
当我们关联查询所有客户以及所有客户下的所有联系人时会发送大量的查询语句,此时可以使用批量抓取策略
1>设置batch-size="4" 一次抓取的数据
<set name="linkMans" cascade="save-update,delete" batch-size="4" >
设置抓取策略之后(2条查询语句)
原文地址:https://www.cnblogs.com/asndxj/p/12071940.html