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 的用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值