<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 19.1\. 抓取策略(Fetching strategies) _抓取策略(fetching strategy)_ 是指:當應用程序需要在(Hibernate實體對象圖的)關聯關系間進行導航的時候, Hibernate如何獲取關聯對象的策略。抓取策略可以在O/R映射的元數據中聲明,也可以在特定的HQL 或`條件查詢(Criteria Query)`中重載聲明。 Hibernate3 定義了如下幾種抓取策略: * _連接抓取(Join fetching)_ - Hibernate通過 在`SELECT`語句使用`OUTER JOIN`(外連接)來 獲得對象的關聯實例或者關聯集合。 * _查詢抓取(Select fetching)_ - 另外發送一條 `SELECT` 語句抓取當前對象的關聯實體或集合。除非你顯式的指定`lazy="false"`禁止 延遲抓取(lazy fetching),否則只有當你真正訪問關聯關系的時候,才會執行第二條select語句。 * _子查詢抓取(Subselect fetching)_ - 另外發送一條`SELECT` 語句抓取在前面查詢到(或者抓取到)的所有實體對象的關聯集合。除非你顯式的指定`lazy="false"` 禁止延遲抓取(lazy fetching),否則只有當你真正訪問關聯關系的時候,才會執行第二條select語句。 * _批量抓取(Batch fetching)_ - 對查詢抓取的優化方案, 通過指定一個主鍵或外鍵列表,Hibernate使用單條`SELECT`語句獲取一批對象實例或集合。 Hibernate會區分下列各種情況: * _Immediate fetching,立即抓取_ - 當宿主被加載時,關聯、集合或屬性被立即抓取。 * _Lazy collection fetching,延遲集合抓取_- 直到應用程序對集合進行了一次操作時,集合才被抓取。(對集合而言這是默認行為。) * _"Extra-lazy" collection fetching,"Extra-lazy"集合抓取_ -對集合類中的每個元素而言,都是直到需要時才去訪問數據庫。除非絕對必要,Hibernate不會試圖去把整個集合都抓取到內存里來(適用于非常大的集合)。 * _Proxy fetching,代理抓取_ - 對返回單值的關聯而言,當其某個方法被調用,而非對其關鍵字進行get操作時才抓取。 * _"No-proxy" fetching,非代理抓取_ - 對返回單值的關聯而言,當實例變量被訪問的時候進行抓取。與上面的代理抓取相比,這種方法沒有那么“延遲”得厲害(就算只訪問標識符,也會導致關聯抓取)但是更加透明,因為對應用程序來說,不再看到proxy。這種方法需要在編譯期間進行字節碼增強操作,因此很少需要用到。 * _Lazy attribute fetching,屬性延遲加載_ - 對屬性或返回單值的關聯而言,當其實例變量被訪問的時候進行抓取。需要編譯期字節碼強化,因此這一方法很少是必要的。 這里有兩個正交的概念:關聯_何時_被抓取,以及被_如何_抓取(會采用什么樣的SQL語句)。不要混淆它們!我們使用`抓取`來改善性能。我們使用`延遲`來定義一些契約,對某特定類的某個脫管的實例,知道有哪些數據是可以使用的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看