代码
- 2.另一类常见的标记是建立表与表之间的关系。这类标记暂叫“关系标记”
- 2.0 “关系标记”有: one-to-one, many-to-one,
- set+one-to-many, set+many-to-many
- 2.1 hibernate mapping中建立的表与表之间的关系和数据库中表与表之间的关系无任何瓜葛,互无影响。
- 前者暂叫“cfg表关系”或“config 表关系”, 或者叫“db表关系”或“database 表关系”
- 不过,cfg表关系常常参照db表关系来建立。
- 2.2 一个关系标记对应一个属性,但该属性表达“表与表的关系”,而不与字段对应。这类属性暂叫“关系属性”
- (1)这就表示更新本表的字段时,不考虑这些关系属性;
- (2)更新本表的同时,也可能要同时更新关系表,这时关系属性起作用。
- 2.3 准则:"cfg表关系"没有相互性。
- 表mainTable 和 表relationTable,
- 在mainTable的mapping文件中建立与relationTable的many-to-one的"cfg表关系" 。
- 这不表示relationTable与mainTable有one-to-many的"cfg表关系"
- 对relationTable的pojo对象进行数据库操作完全不受这个"cfg表关系"影响,就像没有这个关系一样。
- 对mainTable的pojo对象进行数据库操作,可能会根据这个"cfg表关系"更新mainTable表和relationTable表
- 这点与"db表关系"不同,比如在mainTable中建立了一个指向relationTable的foreign key,
- 那么往mainTable中插入一个foreign key 不存在的记录是不容许的,
- 从 relationTable中删除一条记录,而这条记录mainTable中有记录关联它,那么删除会 导 致 异常。
- 这条准则很重要。
- 这表示一个mapping文件中建立的"cfg表关系"不会影响其它mapping文件中的"cfg表关系",
- ,反过来,它也不受其它mapping文件中的"cfg表关系"的影响。
- 这意味着一条"cf