多对一关联关系,一方被删除,多方加载数据不一致的问题

一个典型的应用系统,其中主要的实体(例如Account)一般都有createdUser和lastModifiedUser这样的字段,用以跟踪该实体被那个用户创建和最后修改,我们用hibernate处理这个关系的时候一般是在实体端用一个多对一的单项关联来引用User
[code]<many-to-one class="User" name="createdUser" column="created_user"/>
<many-to-one class="User" name="lastModifiedUser" column="last_modified_user"/>[/code]

如果系统某个用户被删除,这时候会有一个问题:
[b] 1. 实体引用的User的这两个字段已经不存在,hibernate再加载这个实体时就会报引用实体不存在的异常。[/b]
这个问题的一个解决办法是在many-to-one映射中加入not-found="ignore",这样就不会报异常了,但引入了另一个问题:
[b]2.加载实体的时候,不管关联的createdUser和lastModifiedUser存不存在,hibernate都会自动发送一条sql去探测该对象存不存在,这样就多发送了两条sql,如果是列表加载50条记录,就要多发送2×50条sql,严重影响了性能。[/b]

请各位支支招,该类问题如何解决。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值