我在一个大的事物中要实现一部分逻辑是独立事物的, 改如何做? 顺便问下 我有一个文件上传的业务: 保存数据库->保存文件->生成索引. 如何做到一个事物中呢?
1:嵌套事务
JFinal并直接支持嵌套事务,但是可以很容易地实现它。首先在外层事务仍使用JFinal提供的事务方案,然后在内层通过`DbKit.getDataSource().getConnection()`获取连接,自行开启一个新的内部事务。此法有个特别要注意的地方:不能使用`DbKit.getConnection()`来获取连接,此方法获取的是外层事务打开的连接。
2:文件上传业务做成事务
将这个业务放在JFinal提供的事务之下就可以,注意有异常就让其抛出,JFinal声明式事务可根据异常自动回滚事务。如果使用的是Db.tx(...)不仅可以通过异常回滚回事务,还可以通过return false回滚。如果在事务回滚以外还要做其它的工作例如删除已上传的文件,可以在业务外围加上 try catch, 在有异常时,删除文件及目录,处理干净以后,再次抛出异常或者`return false给 JFinal`
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。