1、one-to-one
one-to-one表示一对一关联,<one-to-one>元素的常用属性有以下几种:
①name:关联属性的名字
②class:关联的类名
③cascade:对关联属性的级联操作模式,如cascade=all,表示对该实例的增、删、改操作,都将自动级联关联属性的相应操作。
④constrained:可以配置为true或false,当两张表是基于主键的一对一关系时,往往配置为true。
⑤fetch:可以配置为join或者select,指定使用外连接抓取或者序列选择抓取。
⑥property-ref:指定关联类的属性名,往往在配置基于唯一外键的一对一关系时使用。
⑦lazy:可配置为true或false,表示是否延迟加载。
2、one-to-many
one-to-many表示一对多关联,只有class是必须使用的属性,表示被关联的类名。
3、many-to-one
many-to-one表示多对一关联
①name:关联的属性名
②column:外键字段名
③class:关联的类名
④cascade:对关联属性的级联操作模式,如cascade=all,表示对该实例的增、删、改操作,都将自动级联关联属性的相应操作。
⑤fetch:可以配置为join或者select,指定使用外连接抓取或者序列选择抓取。
⑥property-ref:指定关联类的属性名,往往在配置基于唯一外键的一对一关系时使用。
⑦unique:为外键生成唯一约束
⑧lazy:可配置为true或false,表示是否延迟加载
4、many-to-many
many-to-many表示多对多关联
①column:外键字段名
②class关联类名称
③property-ref:关联类中的属性名
5、集合映射
一对多以及多对多的关联关系,都需要使用集合进行映射。
Hibernate中可以使用<set>、<map>、<array>等进行集合映射。
①name:集合属性的名字
②table:集合表的名称,不能在one-to-many时使用,往往在many-to-many时使用
③lazy:可以配置为true或false,指定是否延迟加载
④inverse:默认为false,可以指定为true。职位false的一段作为关联关系的主控方,维护关联关系
⑤cascade:级联关系模式
⑥fetch:可以选择join或者select
⑦batch-size:通过延迟加载取得集合实例的批处理块的大小