用一對多來舉例:
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