fetch ,可以设置fetch = "select" 和 fetch = "join"
用一对多来举例:
fetch =
"select"是在查询的时候先查询出一端的实体,然后在根据一端的查询出多端的实体,会产生1+n条sql语句;
fetch = "join"是在查询的时候使用外连接进行查询,不会差生1+n的现象。
lazy大家应该都熟悉了,就是延迟加载,可以设置lazy = "true" , lazy = "false" lazy =
"proxy" 。
我在这里要说的主要问题是lazy 和fetch配合使用的问题:
1、当lazy="true" fetch = "select" 的时候 ,
这个时候是使用了延迟策略,开始只查询出一端实体,多端的不会查询,只有当用到的时候才会发出sql语句去查询 ;
2、当lazy="false" fetch = "select" 的时候 ,
这个时候是使没有用延迟策略,同时查询出一端和多端,同时产生1+n条sql.
3、当lazy="true"/lazy="false" fetch =
"join"的时候,自己认为这个时候延迟已经没有什么用了,因为采用的是外连接查询,同时把一端和多端都查询出来了,延迟没有起作用。
hibernate:fetch
时间: 2024-10-18 03:27:13