Hibernate對映關係之延時載入
當一個主物件中包涵從物件時,不同關心 配置會有不同的結果
各個關係之前的區別:
-
one-to-one
查詢主物件:
預設的不是延時載入,查詢主物件時也會把從物件查詢出來
當需要實現延時載入,即,查詢主物件時不查詢從物件(主物件配置:lazy:"true" constranined="true" fetch="select")
查詢從物件:
預設的是延時載入,查詢從物件的時候不查詢主物件
2. many-to-one
查詢主物件:
預設是延時載入,查詢主物件時不會查詢從物件
若要取消延時載入,查詢主物件時也查詢從物件,設定fetch="join"
查詢從物件:
預設是延時載入,查詢從物件時不會查詢主物件
3.one-to-many
查詢主物件:
預設是延時載入,查詢主物件時不會查詢從物件
查詢從物件:
預設是延時載入,查詢從物件時不會查詢主物件
當需要取消延時載入時,設定fetch="join"
fetch和lazy配置用於資料的查詢
lazy:引數值常見有 false 和 true,預設的是lazy=true
fetch:指定了關聯物件的抓取方式,常見引數值為 select 和 join,預設的是 select
select:延時載入 join:在同一條select語句中使用內連線來獲取資料和它物件的資料,此時延時載入失效
在對映檔案中 ,不同組合之間的差異
lazy="true" fetch="select"
延時策略,開始只查詢主物件不查詢從物件,只有使用到時才會查詢從物件
lazy="false" fetch="select"
沒有使用延時策略,同時查詢主物件和從物件,產生1+n條sql,即,每一個結果都會發生一條sql語句
lazy="true" 或 lazy="false" fetch="join"
才用外連結查詢,延時查詢策略都會失效,同時會把主物件和從物件查詢出來