精通Hibernate——Hibernate使用触发器需要注意的两点

数据库系统有时会利用触发器来完成某些业务规则。触发器在接收到特定的事件时被激发,执行事先定义好的一组数据库操作。能激发触发器运行的时间可以分为以下几种:
1.插入事件,insert
2.更新记录事件,update
3.删除记录事件,delete
Hibernate与数据库中的触发器协同工作时会造成两类问题:
1.触发器使Session的缓存中的数据与数据库不一致
在激发执行触发器之后在执行这个操作后,立即调用Session的flush和refresh方法,迫使Session的缓存与数据库同步。另一方面,如果执行完Session的save方法后不会再访问Customer对象,那么也没有必要迫使Session的缓存与数据库同步。
2.Session的update方法盲目的激发触发器
当配置文件配置如下:

<class name="mypack.Customer" table="CUSTOMRS" select-before-update="true"></class>

当Session的update或saveOrUpdate方法更新一个Customer游离对象时,会先执行select语句,获得这个Customer对象子数据库中最新数据,然后比较Customer游离对象与数据库中的最新数据,然后比较Customer游离对象与数据库中的数据是否一致,只有在不一致的情况下才会执行update语句,这就避免了多余的update语句,以及盲目的激发相关的触发器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值