1、一对多的关系:单项n-1(many-to-one),双向1-n(双向n-1)
2、inverse:指定由哪一方来维护关联关系,通常设置为true,以指定由多的一方来 维护关联关系
3、cascade:级联删除,开发时不建议设定该属性,建议手工的方式处理
4、order-by:数据库排序
5、 基于外键映射的1-1:其外键可以存放在任意一边,在需要存放外键的一端,增加 many-to-one 元素,为 many-to-one 元素增 加 unique = "true" 属性来表示1-1关联。 另一端使用 one-to-one 元素,该元素使用 propety-ref 属性指定使用被关联实体主键以外的字段作为关联字段(即后文的mgr属性)
6、基于主键映射的1-1:
1)基于主键的映射策略:指一端的主键生成器使用foreign策略,表明根据“对方”的主键来生成自己的主键,自己并不能独立生成主键。<param>子元素指定使用当前持久化类的哪个属性作为“对方”。
2)采用foriegn主键生成器策略的一端增加one-to-one元素映射关联属性,其one-to-one属性还应该增加constranied="true"属性;另一端增加one-to-one元素映射关联属性。
3)constrained(约束):指定为当前持久化类对应的数据库表的主键添加一个外间约束,引用被关联的对象(“对方”)所对应的数据表主键。
7、双向n-n关联:需要建立中间连接表,需要两端都使用set集合属性,两端都增加对集合属性的访问。在双向N-N关联的两边都需指定连接表的表名及外键列的列名. 两个集合元素 set 的 table 元素的值必须指定,而且必须相同。set元素的两个子元素:key 和 many-to-many 都必须指定 column 属性,其中,key 和 many-to-many 分别指定本持久化类和关联类在连接表中的外键列名,因此两边的 key 与 many-to-many 的column属性交叉相同。也就是说,一边的set元素的key的 cloumn值为a,many-to-many 的 column 为b;则另一边的 set 元素的 key 的 column 值 b,many-to-many的 column 值为 a。(对于双向 n-n 关联, 必须把其中一端的 inverse 设置为 true, 否则两端都维护关联关系可能会造成主键冲突。)
8、继承映射:
1)采用subclass元素的继承映射
2)采用joined-subclass元素的继承映射
3)采用union-subclass元素的继承映射