91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hibernate延遲加載技術是什么

發布時間:2021-12-04 16:35:48 來源:億速云 閱讀:156 作者:iii 欄目:編程語言

這篇文章主要講解了“Hibernate延遲加載技術是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Hibernate延遲加載技術是什么”吧!

Hibernate延遲加載的對象:

◆hibernate 2針對實體對象和集合
◆hibernate 3同時提供了屬性的延遲加載功能。
其中對集合的延遲加載特性意義最為重大。

實體對象的Hibernate延遲加載:

在hibernate配置文件中的class指定

集合類型的Hibernate延遲加載:

在set中指定lazy=true
這樣只有實際加載與對象相關聯的集合對象的時候,再通過session從數據庫中加載實際的數據集。
Hibernate.initialize方法可以強制Hibernate立即加載關聯的對象集,例如:
Hibernate.initialize(user.getAddress());
集合類型的緩存:

如果為某個集合類設定了緩存,如

<set       name="address"     table="t_address"     lazy="true"     ......  >     <cache usage="read-only"/>     <key column="user_id" />     <one-to-many class="cn.blogjava.TAddress" /> </set>

Hibernate對集合類型進行緩存的時候,分兩部分保存。首先是這個集合中所有實體的id列表,其次才是各個實體對象。
這里制定了cache usage="read-only"只會使得Hibernate對數據索引進行緩存。也就是說只緩存了集合中的數據索引,并不包含集合中的各個實體元素。
如果指定cache usage="read-write"才會對集合中的實體進行緩存。

屬性的Hibernate延遲加載:

在property節點中聲明lazy=true,而且還需要借助Hibernate類增強器對POJO類的二進制Class文件進行強化處理。

hibernate中的Collection
Hibernate對JDK Collention接口的獨立實現:
由于傳統的Java Set, Map, List實現不能滿足要求,Hibernate根據這些接口提供了自己的實現。

Hibernate的實現:

◆無序集:Set, Bag, Map
◆有序集:List
Bag相當于一個允許重復元素存在的Set。因為Hibernate是自己的Collection實現,所以如下語句會出錯,Set hset = (HashSet)user.getAddresses();會在運行期報告一個java.lang.ClassCastException,因為實際上返回的是一個類型為org.hibernate.collention.Set的對象。

所有我們在寫POJO時,必須用JDK Collection Interface(如Set, Map),而非特定的JDK Collection實現類(如HashSet, HashMap)聲明Collection型屬性的原因。例如:應該是private Set addresses;而不是private HashSet addresses;collection類型屬性的保存過程。

例如

public class TUser implements Serializable {   private Set addresses = new HashSet();          ......  }

然后創建一個TUser實例后,就可以為其添加關聯的address對象:

TUser user = new TUser();  TAddress addr = new TAddress();  addr.setAddress("HongKong");  user.getAddress().add(addr);  session.save(user);

user對象在經過Hibernate處理后發生了變化,首先,由于insert操作,產生了id值,并填充到user對象的id屬性,另一方面Hibernate使用了自己的collection實現對user中的HashSet型addresses屬性進行了替換,并用數據對其進行了填充。

感謝各位的閱讀,以上就是“Hibernate延遲加載技術是什么”的內容了,經過本文的學習后,相信大家對Hibernate延遲加載技術是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

逊克县| 越西县| 梧州市| 巴林左旗| 剑川县| 临夏县| 镇巴县| 红安县| 微山县| 吕梁市| 岗巴县| 都昌县| 特克斯县| 中方县| 新乐市| 岑溪市| 海安县| 平乐县| 锡林郭勒盟| 青州市| 浦县| 夏河县| 秀山| 柳河县| 甘南县| 建湖县| 临海市| 岱山县| 峡江县| 随州市| 公安县| 义乌市| 扎兰屯市| 宣武区| 道孚县| 驻马店市| 武平县| 哈巴河县| 凯里市| 霍邱县| 龙陵县|