参考地址:http://my.oschina.net/u/274427/blog/68584
1.多对一单向关联,如A多对一B,多个A可以对应一个B,在A中数据表中设定一个外键代表B的id(B_id),A类属性中存在B类对象属性,在映射文件中用<many-to-one>将A中的B对象映射到数据表A中的外键(B_id)中,而B中不需要存在A对象属性。
1
2
3
4
5
6
7
|
<
many-to-one
name
=
"A中B属性名" 是指在A类中定义的B对象的字段名
column
=
"B_id"
class
=
"B包名.类名"
lazy
=
"false"
not-null
=
"false"
cascade
=
"none"
/>
|
2.映射一对多双向关联,则B中存在表示A类的集合对象,将B中集合类对象声明成接口类型,如List,Set,Map,使应用程序不局限于该接口实现类,可以提高程序健壮性,利用
1
2
3
4
5
|
<
Set
inverse
=
"true"
name
=
"B类中集合"
cascade
=
"save-update"
>
<
key
column
=
"B_id"
/>
<
one-to-many
class
=
"A包名.类名"
/>
</
Set
>
|
进行配置B.hbm.xml,inverse属性默认为false,应将它设置为true(应将one方inverse设置为true),inverse作用为当hibernate检测到A和B的属性均发生变化时,仅按照A方的变化来同步数据库。
3.在Set中设置cascade="delete" 当删除B对象时,同时也删除和B关联的所有A对象。
4.父子关系,如想在A和B解除关系时同时删除A对象,则可以cascade="all-delete-orphan",当关联双方存在父子关系时,就可以将复方cascade设置成all-delete-orphan,让父管理子的持久化生命周期,不允许子单独存在,如果删除父方对象,同时也删除级联的子方所有对象。