今天爱分享给大家带来手工开启事务注意保证commit或rollback及避免长事务【附代码】,希望能够帮助到大家。
用事务时,确保commit或rollback执行。避免由于代码问题,commit或rollback未执行,连接未正常归还连接池,导致服务整体挂掉。(生产我知道的有两次)。错误代码示例:
ITransactionManager txManager = getTransactionManager();
txManager.begin();
try{
insert(String orderNo, Limit limit);
// 问题一:有可能外部服务不稳定,导致长事务
callRemoteService(orderNo);
int res = updateOrder(orderNo);
// 问题二:有可能事务未提交
if(res > 0)
txManager.commit();
}catch(Exception e){
txManager.rollback();
logger.error(e.getMessage(), e);
}
正确代码:
callRemoteService(orderNo);
ITransactionManager txManager = getTransactionManager();
txManager.begin();
try{
insert(String orderNo, Limit limit);
updateOrder(orderNo);
txManager.commit();
}catch(Exception e){
txManager.rollback();
logger.error(e.getMessage(), e);
}
原文链接:http://blog.itblood.com/4012.html,转载请注明出处。

![较暗Ch.1P9 AI版[PC+安卓/7.67G/更新]Darker [Ch. 1 P9] [欧美SLG/汉化/动态]](/wp-content/uploads/replace/2025/10/29/799e7bdd3a3c6a3768e52301aa7ab9a5.webp)