我们有一些第三方代码,其中他们执行以下操作
项目清单
创建用户交易,例如
txn = (UserTransaction)ctx.lookup( "UserTransaction" );
txn.begin( );
做一些工作(通过JPA)持久化到数据库(通过JPA)到MySQL数据库
txn.commit()
它们具有异常块,但是没有一个调用
txn.rollback
。良好的编码习惯说,如果发生异常,他们需要调用回滚,但是我的问题是
如果未提交txn,并且发生异常,则它们不调用回滚的负面影响是什么?
最佳答案
事务保持活动状态,直到您commit()
或rollback()
为止。它将继续保持锁定状态,您最终可能会阻塞应用程序(实际上是数据库)。