【发布时间】:2016-05-08 20:32:15
【问题描述】:
我们目前正在处理该功能,该功能必须部分与数据库一起工作,部分与服务一起工作,其操作非常耗时。所以,一般来说,这是一个事务方法,它的代码如下:
Connection conn = null;
try {
conn = getConnection(); // This I get from the connection pool
Employee emp = queryDatabase(id);
// Point A - ??
Response resp = makeLongTimeServiceCall(emp);
// Point B - ??
anotherQueryDatabase(resp);
} catch (Exception e) {
throw e; // And this also rolls back the transaction
} finally {
// If conn is not closed, close it, so there would be no leaks
}
所以最大的问题是 - 我是否应该关闭 A 点的连接,然后从 B 点的连接池中再次获取它,以便其他 servlet 可以在我与服务交互时使用该连接?我的猜测是我应该这样做,但这会损害我的交易吗?
【问题讨论】:
-
当我读到这个“长期交易......”时,我很伤心。
标签: java jdbc transactions connection-pooling rollback