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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 6.1\. 持久化集合類(Persistent collections) &lt;a class="calibre5 pcalibre pcalibre1" id="collections-persistent-translate-comment"&gt;&lt;/a&gt;(譯者注:在閱讀本章的時候,以后整個手冊的閱讀過程中,我們都會面臨一個名詞方面的問題,那就是“集合”。"Collections"和"Set"在中文里對應都被翻譯為“集合”,但是他們的含義很不一樣。Collections是一個超集,Set是其中的一種。大部分情況下,本譯稿中泛指的未加英文注明的“集合”,都應當理解為“Collections”。在有些二者同時出現,可能造成混淆的地方,我們用“集合類”來特指“Collecions”,“集合(Set)”來指"Set",一般都會在后面的括號中給出英文。希望大家在閱讀時聯系上下文理解,不要造成誤解。 與此同時,“元素”一詞對應的英文“element”,也有兩個不同的含義。其一為集合的元素,是內存中的一個變量;另一含義則是XML文檔中的一個標簽所代表的元素。也請注意區別。 本章中,特別是后半部分是需要反復閱讀才能理解清楚的。如果遇到任何疑問,請記住,英文版本的reference是惟一標準的參考資料。) Hibernate要求持久化集合值字段必須聲明為接口,比如: ``` public class Product { private String serialNumber; private Set parts = new HashSet(); public Set getParts() { return parts; } void setParts(Set parts) { this.parts = parts; } public String getSerialNumber() { return serialNumber; } void setSerialNumber(String sn) { serialNumber = sn; } } ``` 實際的接口可能是`java.util.Set`, `java.util.Collection`, `java.util.List`, `java.util.Map`, `java.util.SortedSet`, `java.util.SortedMap` 或者...任何你喜歡的類型!("任何你喜歡的類型" 代表你需要編寫 `org.hibernate.usertype.UserCollectionType`的實現.) 注意我們是如何用一個`HashSet`實例來初始化實例變量的.這是用于初始化新創建(尚未持久化)的類實例中集合值屬性的最佳方法。當你持久化這個實例時——比如通過調用`persist()`——Hibernate 會自動把`HashSet`替換為Hibernate自己的`Set`實現。觀察下面的錯誤: ``` Cat cat = new DomesticCat(); Cat kitten = new DomesticCat(); .... Set kittens = new HashSet(); kittens.add(kitten); cat.setKittens(kittens); session.persist(cat); kittens = cat.getKittens(); //Okay, kittens collection is a Set (HashSet) cat.getKittens(); //Error! ``` 根據不同的接口類型,被Hibernate注射的持久化集合類的表現類似`HashMap`, `HashSet`, `TreeMap`, `TreeSet` or `ArrayList`。 集合類實例具有值類型的通常行為。當被持久化對象引用后,他們會自動被持久化,當不再被引用后,自動被刪除。假若實例被從一個持久化對象傳遞到另一個,它的元素可能從一個表轉移到另一個表。兩個實體不能共享同一個集合類實例的引用。因為底層關系數據庫模型的原因,集合值屬性無法支持空值語義;Hibernate對空的集合引用和空集合不加區別。 你不需要過多的為此擔心。就如同你平時使用普通的Java集合類一樣來使用持久化集合類。只是要確認你理解了雙向關聯的語義(后文討論)。
                  <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>

                              哎呀哎呀视频在线观看