用一对多来举例:
fetch = "select"是在查询的时候先查询出一端的实体,而后在根据一端的查询出多端的实体,会产生1+n条sql语句;
fetch = "join"是在查询的时候使用外链接进行查询,不会差生1+n的现象。
lazy你们应该都熟悉了,就是延迟加载,能够设置lazy = "true" , lazy = "false" lazy = "proxy" 。
我在这里要说的主要问题是lazy 和fetch配合使用的问题:
一、当lazy="true" fetch = "select" 的时候 ,这个时候是使用了延迟策略,开始只查询出一端实体,多端的不会查询,只有当用到的时候才会发出sql语句去查询 ;
二、当lazy="false" fetch = "select" 的时候 ,这个时候是使没有用延迟策略,同时查询出一端和多端,同时产生1+n条sql.
三、当lazy="true"/lazy="false" fetch = "join"的时候,本身认为这个时候延迟已经没有什么用了,由于采用的是外链接查询,同时把一端和多端都查询出来了,延迟没有起做用。
sql