我正在开发一个WebApp,并且想知道在方法之间是否存在共享JDBC连接对象的优点/缺点
所以情况是
现在我有两种方法
方法1 打开连接对象一次,然后将其传递给方法
// Just a Pseudo Code
Cn = OpenJDBConnection() // This will open up the connection
obj.Task1(Cn, Param1, Param2);
obj.Task2(Cn, Param1, Param2);
obj.Task3(Cn, Param1, Param2);
Cn.close();
方法2 在每种方法中打开和关闭连接
我倾向于方法1,因为这样我将能够避免一些样板代码。但我不确定它是线程安全的吗?我有一个100连接的池化,我认为对于在给定时间活动的1000个用户是可以的
在采用其中一种方法
之前还有其他我应该考虑的事情答案 0 :(得分:4)
考虑在连接级别管理事务。
对于您的简单用例,方法#1可能有效,但很容易进入这样一种情况,例如,您在连接上有待处理的事务,并调用另一个在同一连接上执行select的方法,这将导致您的事务提交(早于您的预期)。
通过正确配置的连接池,释放和重新获得连接的开销应该是最小的,所以我建议方法#2。当汇集时,关闭连接并不会真正关闭它,它会将其打开并将其返回到池中。