Hibernate 常见的集合映射主要有 Set,List,Array,Map,Bag 等,它们的特点如下:
1) Set 集合是 Hibernate 中基础的集合类型,元素数据一般使用外键同主表关联,Set 集合非常适用于集合元素不能重复的情况。
2) Set 集合是无序的,集合元素并不是按照一定的顺序排列的,而 List 集合是有序的,每个集合元素需要有一个表示集合序号的标识,这
样可以使用该标识来获得该集合元素。
3) 数组 Array 使用的是 List 的方式来表示的。
4) Map 集合的特点是使用键值对,即 Key-Value 结构来存放集合元素,这样就需要对应的集合元素数据库表中包含对于 Key 的列。
5) Set 集合是无序、不能有重复元素的,Hibernate 提供了一个 Bag 集合,用来处理重复元素的情况。值得注意的是,Bag 并不是 Java
API,而是 Hibernate 提供的。Bag 集合映射和 List 不同,List 的集合元素是有序的,需要有一个集合序号来标识集合元素的位置,List 元
素可以重复;而 Bag 集合元素不需要元素序号标识,元素也是可以重复的。
#
首先建立数据库表,SQL 语句如下:
Sql 代码o
1. CREATETABLE‘message’(
2. 'id'int(11)NOTNULL,
3. 'setValue'varchar(100)NOTNULL,
4. 'listValue_id'int(11)NOTNULL,
5. 'listValue'varchar(100)NOTNULL,
6. 'arrayValue_id'int(11)NOTNULL,
7. 'arrayValue'varchar(100)NOTNULL,
8. 'mapValue_id'int(11)NOTNULL,
9. 'mapValue'varchar(100)NOTNULL,
10. 'bagValue'varchar(100)NOTNULL
11. )ENGINE=InnoDBDEFAULTCHARSET=gbk
12.
13. CREATETABLE'master'(
14. 'id'int(11)NOTNULLauto_increment,
15. 'name'varchar(100)NOTNULLdefault'',
16. PRIMARYKEY('id')
17. )ENGINE=InnoDBDEFAULTCHARSET=gbk
#
建立角色的实体类,代码如下:
Java 代码o
1. importjava.io.Serializable;
2. importjava.util.List;
3. importjava.util.Map;
4. importjava.util.Set;
5.
6. @SuppressWarnings({"unchecked","serial"})
7. publicclassMasterimplementsSerializable{
8. privateIntegerid;//主键 ID 属性oo
9. privateStringname;//姓名 name 属性oo
10. privateSetsetValue;
11. privateListlistValue;
12. privateString[]arrayValue;
13. privateMapmapValue;