五、Hibernate映射集合属性
集合属性是很常见的。集合属性一般分为两种,一种是单纯的集合属性,如List、Set或者数组等集合属性,另一种是map结构的集合属性,每个属性值都有对应的key映射。
集合映射的元素大致有如下这些:
1、list:用于映射List集合属性
2、set:用于映射Set集合属性
3、map:用于映射Map集合属性
4、array:用于影视数组集合属性
5、primitive-array:用于映射基本数据类型的数组
6、bag:用于应射无序集合
7、idbag:用于映射无序集合,但是为集合增加了逻辑次序
注意:
1、两个持久化对象不能共享同一个集合元素的引用
2、因为集合属性都需要保存在另一个数据表中个,所以需要指定一个外键列,用于参照到主键列
3、在所有的结合映射中,除了
下面是集合属性的基本配置:
1、List集合属性
List集合属性采用
[html]
2、数组属性
数组属性采用
[html]
3、Set集合属性
Set集合属性采用
[java]
4、bag元素映射
使用
[html]
5、Map集合属性
Map集合属性需要使用
Map集合属性是以外键列和key列作为联合主键。
[html]
六、Hibernate映射组件属性
组件属性标志着该属性并不是一个简单的基本数据类型、字符串、日期的变量,而是一个符合类型的对象。
在映射组件属性中,Hibernate提供了
[html]
当集合属性的元素作为组件时,我们需要使用
[html]
七、Hibernate的关联映射
Hibernate的关联关系有两种:单向、双向。
其中单向关联分为:1-1、1-N、N-1、N-N。
双向关联分为:1-1、1-N、N-N。
7.1、单向N-1关联
对于单向N-1关联,只需要在在N的一端的持久化类增加一个属性,该属性引用1的一端的关联实体。
1、无连接表的N-1关联(基于外键)
Hibernate使用
[html]
注意:对于所有的基于外键约束关联关系中,都必须这样:要么总是持久化主表对应的实体,要么设置级联操作(cascade="all")。
2、基于连接表的N-1关联
对于基于有连接表的关联关系,需要使用
在这里映射文件中这样:N的一端使用
[html]
7.2、单向1-1关联
对于1-1关联而言,它有三种关联映射策略:基于外键、基于连接表、基于主键。
1、基于外键的单向1-1关联
基于外键的1-1关联映射与基于外键的N-1的映射文件几乎没有什么区别,只需要在
[html]
2、基于连接表的单向1-1关联
基于连接表的1-1关联映射与基于连接表的N-1的映射也没有什么区别,同样只需要在
[html]
3、基于主键的单向1-1关联
对于基于主键的1-1关联映射,它的持久化类不能有自己的主键生成器策略,它的主键应该有关联实体来负责生成。
采用
[html]
address
7.3、单向1-N关联
对于单向1-N关联关系的持久化类,1的一端需要访问N的一端,而N的一端应该以集合的形式表现。
1、基于无连接表的单向1-N
在N的一端需要映射集合属性,还要使用
[html]
2、基于有连接表的单向1-N
对于有连接表的1-N关联映射,映射文件使用
[html]
7.4、单向N-N关联
单向的N-N关联与1-N关联的持久化类完全相同,控制关系的一端需要增加一个Set类型的属性,被关联的持久化类实体以