1. 程式人生 > >Hibernate對映關係之延時載入

Hibernate對映關係之延時載入

當一個主物件中包涵從物件時,不同關心 配置會有不同的結果

各個關係之前的區別:

  1. 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"

        才用外連結查詢,延時查詢策略都會失效,同時會把主物件和從物件查詢出來