我们有一些第三方代码,其中他们执行以下操作


项目清单

创建用户交易,例如

 txn = (UserTransaction)ctx.lookup( "UserTransaction" );
 txn.begin(  );

做一些工作(通过JPA)持久化到数据库(通过JPA)到MySQL数据库
txn.commit()


它们具有异常块,但是没有一个调用txn.rollback
良好的编码习惯说,如果发生异常,他们需要调用回滚,但是我的问题是
如果未提交txn,并且发生异常,则它们不调用回滚的负面影响是什么?

最佳答案

事务保持活动状态,直到您commit()rollback()为止。它将继续保持锁定状态,您最终可能会阻塞应用程序(实际上是数据库)。

10-06 08:33