hibernate中的集合映射

在one-to-many(parent/child)關係中, 不妨假設對應表爲parent和child,對應的POJO(javabean)爲Parent和Child。在Parent中會定義一個元素爲Child對象的集合。在hibernate3.2版本上,該集合支持set/bag/array/list/map類型,其中以set最爲常用。
1、set爲無重複元素集合,而bag則允許元素有重複(bag對應的集合必須聲明爲List或Collection)
2、list和array需要一個索引字段,即表示該條記錄在列表或數組中的順序號
3、map需要一個key字段,value一般用普通類型(如String)或實體類(如本例中的Child類)

通過一個簡單的範例程序,很好地比較了各種集合的使用方法,以及輸出結果的差異。掌握了這幾種集合的用法之後,再在實際項目中根據不同的需求進行選擇。

在集合標籤中,有2個屬性必須得強調一下:
1、order-by表示集合元素的排列順序,可以按照某個字段的升降序排列(seqno asc)
2、fetch="join|select|subselect",join表示用連接查詢的方式同時取出Parent和child(即一條SQL語句),而select方式則表示先讀取Parent,再根據parent_id來讀取Child列表(發出二條SQL語句)。這兩種方式在性能上有差別,當啓用了延遲加載模式(lazy="true")後,比如查出1000個parent,而只想看其中10個parent對應的child列表,則select方式的性能會比join方式更好。

如用array或list來保存某書籍的作者列表(第一作者、第二作者)。

附件中爲源代碼程序(hibernate3.2,jdk5.0)
(因發帖時上傳文件功能有bug無法上傳文件,暫且將附件放到“我的資源”中)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章