gpt4 book ai didi

方法之间的 Java JDBC 连接共享/中继

转载 作者:行者123 更新时间:2023-11-30 07:21:54 26 4
gpt4 key购买 nike

我正在开发一个 WebApp,想知道在方法之间共享 JDBC 连接对象是否有任何优点/缺点

所以情况是

  • 这是一个 WebApp 和多用户环境(大约 1000 个用户同时使用)
  • 我正在使用支持连接池的容器 (Weblogic Server)
  • 我在 JDBC 调用中使用事务处理
  • 我的大部分 JDBC 调用都是单条记录插入/更新,但选择/删除可以批量进行

现在我有两种方法

方法一打开连接对象一次并跨方法中继它

// 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 个连接,我认为这对于在给定时间 Activity 的 1000 个用户来说是可以的

在采用其中一种方法之前,我还应该考虑其他什么吗

最佳答案

请考虑在连接级别管理事务。

对于您的简单用例,方法 #1 可能有效,但很容易陷入这样一种情况,例如,您在连接上有待处理的事务,并调用另一个在同一连接上进行选择的方法,这将导致您的事务提交(比您预期的要早)。

通过正确配置的连接池,释放和重新获取连接的开销应该是最小的,所以我建议方法 #2。当合并时,关闭连接并不会真正关闭它,它会保持打开状态并将其返回到池中。

关于方法之间的 Java JDBC 连接共享/中继,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13060126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com