Hibernate mapping 归纳

1) inverse

 

参考文章: Hibernate 中 inverse 的用法

 

在 mapping 一对多关系的时候,我们通常需要把 这个 一对多的关系 让 多的一方去维护! 从 Data Model 定义的基本逻辑上也是如此。比如 person 和 addresses, 定义 Data Model 的时候, PERSON 的地址关系 通常是由 addresses 一方来维护。 所以表结构定义如下

 

PERSON

 

ADDRESS ( ID, PERSONID )

 

所以在 通常在 PERSON 中 mapping PERSON 和 ADDRESS 的关系时,我们需要 inverse = true, 表示,由 Address 对象你来维护 PERSON 的地址关系。

 

典型例子, 如果在配置一对多的时候,已经设置了 CASCADE = "delete-all-orpha",但是忘了设置 inverse = true,那么默认关系是 inverse = false, 那么这个时候 PERSON 试图在 CUD PERSON-ADDRESS 关系的时候,特别是 delete 某一个 PERSON-ADDRESS 的时候, 他的做法是在 ADDRESS 表中 将 PERSONID 置为 NULL。而不是直接删除 该条ADDRESS 记录。这样通常会发生意想不到的错误。 相反,如果我们将 inverse = true,那么他的做法是直接删除对应 ADDRESS中的该条记录。

 

2) CASCADE

 

all-delete-orphan

 

参见 Hibernate 中 all-delete-orphan 的用法

你可能感兴趣的:(Hibernate)