节 1.01 映射 Set
1、 为了隐藏 ITEM_IMAGE 为一个单独表,故在数据库设计中将 ITEM_IMAGE 的主键和外键设定都设定为 ITEM_ID, 在 Hibernate 配置文件中用 set 集合的形式加以隐藏。
2、 引文 Set 集合无法包含重复元素,因此在 ITEM_IMAGE 表中使用复合主键。
不可重复的元素,顺序无法保存
private Set images = new HashSet ();
< set name = "images" table = "ITEM_IMAGE" >
< key column = "ITEM_ID" />
< element type = "string" column = "FILENAME" not-null = "true" />
</ set >
节 1.02 映射 Bag
可重复的元素,不保存元素顺序
private Collection images = new ArrayList ();
< idbag name = "images" table = "ITEM_IMAGE" >
< collection-id type = "long" column = "ITEM_IMAGE_ID" >
< generator class = "sequence" />
</ collection-id >
< key column = "ITEM_ID" />
< element type = "string" column = "FILENAME" not-null = "true" />
</ idbag >
节 1.03 映射 List
可重复的元素,顺序可以保存
1、 添加 POSITION 列目的是用于保存存储数据的顺序。
2、 表的主键为 ITEM_ID 和 POSITION 的复合主键。
private List images = new ArrayList();
< list name = "images" table = "ITEM_IMAGE" >
< key column = "ITEM_ID" />
< list-index column = "POSITION" />
< element type = "string" column = "FILENAME" not-null = "true" />
</ list >
节 1.04 映射 Map
保存键 / 值对数据 , 顺序不可保存,为无序状态
1 、将 ITEM_ID 和 IMAGENAME 设定为双主键。
private Map images = new HashMap ();
< map name = "images" table = "ITEM_IMAGE" >
< key column = "ITEM_ID" />
< map-key type = "string" column = "IMAGENAME" />
< element type = "string" column = "FILENAME" not-null = "true" />
</ map >
节 1.05 排序集合 Sorted Collection
(a) 排序 Set
Set images = new TreeSet ();
< set name = "images" table = "ITEM_IMAGE" sort = "natural" >
< key column = "ITEM_ID" />
< element type = "string" column = "FILENAME" not-null = "true" />
</ set >
(b) 排序 Map
private SortedMap images = new TreeMap ();
< map name = "images" table = "ITEM_IMAGE" sort = "natural" >
< key column = "ITEM_ID" />
< map-key type = "string" column = "IMAGENAME" />
< element type = "string" column = "FILENAME" not-null = "true" />
</ map >
节 1.06 有序集合 Ordered Collection
(a) 有序 Set
private Set images = new LinkedHashSet ();
< set name = "images" table = "ITEM_IMAGE" order-by = "ITEM_ID" >
< key column = "ITEM_ID" />
< element type = "string" column = "FILENAME" not-null = "true" />
</ set >
(b) 有序 Map
private Map images = new LinkedHashMap ();
< map name = "images" table = "ITEM_IMAGE" order-by = "IMAGENAME asc" >
< key column = "ITEM_ID" />
< map-key type = "string" column = "IMAGENAME" />
< element type = "string" column = "FILENAME" not-null = "true" />
</ map >