事务一致性 与异常抛出

通常  我们 利用  配置 service层  update,save 等方法名前缀 来达到事务。并将 存储修改  的 代码 放入 service  以  保持 事务的 完整性。
而在 实际 项目中 遇到 如图:
事务一致性 与异常抛出_第1张图片
事务一致性 与异常抛出_第2张图片
在代码执行 到 bonusService.save 操作时 已经 发生异常 但并未 抛出异常,尽管在 第一幅图第二行 throws exception ,但程序并未停止 ,并依然执行了 白色框中的代码,
导致了 功能错误
事务一致性 与异常抛出_第3张图片
究其原因。一般类似空指针,数组越界等异常会被程序捕捉抛出。而对于程序事务中使用了乐观锁 导致 的异常 并未被程序 抛出 。
于是总结, 在service 中只 放 与事务 有关 的代码。 与事务 无关的 代码 放置于 controllor中。(注:在修改中首先将白色区域代码独立出来构造一个父方法。发现,在 service中 若子方法事务,而父方法不事务并调用子方法。则 程序将会 把 父子方法 同事务处理。即 结果 依然 会执行 白色区域代码)

你可能感兴趣的:(技术总结)