开题
很多情况下会要求事务的特性支持,比如数据库操作,比如消息处理
好在代码上如果需要处理事物的话其实还比较简单
代码
提取接口
事务常见的用法即:begin
,commit
,rollback
,close
,那么就提取这样的接口出来:
|
|
自定义实现
- 在
begin
部分完成一些初始化工作 - 在
commit
部分可以做的比较灵活:
你可以在这里提交你做的操作,并在操作失败的情况下返回异常信息;
也可以只设置状态,在你自身代码中添加你想做的操作,只是操作完后记得调用commit
修改状态即可 - 需要注意的是由于发生执行失败需要回滚,所以你需要将
rollback
所需要执行的操作或数据保存下来,如果执行成功,则清空在rollback
的部分,根据commit
的执行情况执行回滚(通常都是抛异常时),当然在rollback
操作时还是会发生异常,根据业务场景可以加入重试策略,在close
的部分释放资源
总结
根据事物的特性代码上实现就这些了,高级的场景另外分析