<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 10.3\. 裝載對象 如果你知道某個實例的持久化標識(identifier),你就可以使用`Session`的`load()`方法 來獲取它。 `load()`的另一個參數是指定類的.class對象。 本方法會創建指定類的持久化實例,并從數據庫加載其數據(state)。 ``` Cat fritz = (Cat) sess.load(Cat.class, generatedId); ``` ``` // you need to wrap primitive identifiers long id = 1234; DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) ); ``` 此外, 你可以把數據(state)加載到指定的對象實例上(覆蓋掉該實例原來的數據)。 ``` Cat cat = new DomesticCat(); // load pk's state into cat sess.load( cat, new Long(pkId) ); Set kittens = cat.getKittens(); ``` 請注意如果沒有匹配的數據庫記錄,`load()`方法可能拋出無法恢復的異常(unrecoverable exception)。 如果類的映射使用了代理(proxy),`load()`方法會返回一個未初始化的代理,直到你調用該代理的某方法時才會去訪問數據庫。 若你希望在某對象中創建一個指向另一個對象的關聯,又不想在從數據庫中裝載該對象時同時裝載相關聯的那個對象,那么這種操作方式就用得上的了。 如果為相應類映射關系設置了`batch-size`, 那么使用這種操作方式允許多個對象被一批裝載(因為返回的是代理,無需從數據庫中抓取所有對象的數據)。 如果你不確定是否有匹配的行存在,應該使用`get()`方法,它會立刻訪問數據庫,如果沒有對應的記錄,會返回null。 ``` Cat cat = (Cat) sess.get(Cat.class, id); if (cat==null) { cat = new Cat(); sess.save(cat, id); } return cat; ``` 你甚至可以選用某個`LockMode`,用SQL的`SELECT ... FOR UPDATE`裝載對象。 請查閱API文檔以獲取更多信息。 ``` Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE); ``` 注意,任何關聯的對象或者包含的集合都_不會_被以`FOR UPDATE`方式返回, 除非你指定了`lock`或者`all`作為關聯(association)的級聯風格(cascade style)。 任何時候都可以使用`refresh()`方法強迫裝載對象和它的集合。如果你使用數據庫觸發器功能來處理對象的某些屬性,這個方法就很有用了。 ``` sess.save(cat); sess.flush(); //force the SQL INSERT sess.refresh(cat); //re-read the state (after the trigger executes) ``` 此處通常會出現一個重要問題: Hibernate會從數據庫中裝載多少東西?會執行多少條相應的SQL`SELECT`語句? 這取決于_抓取策略(fetching strategy)_,會在[第 19.1 節 “ 抓取策略(Fetching strategies) ”](../Text/pr01_split_000.html#performance-fetching "19.1\. 抓取策略(Fetching strategies) ")中解釋。
                  <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>

                              哎呀哎呀视频在线观看