java - 是始终打开一个连接更好,还是每次需要某事时都建立一个连接更好?

标签 java database postgresql coding-efficiency network-efficiency

目前,我的程序每次需要时都会建立与服务器的连接,并在获取所需内容后关闭连接。

Connection con = DriverManager.getConnection(url, user, pass);      
//grab data      
con.close();

这是更好还是更坏的做法?如果我从程序一开始就运行一个全局连接,会有什么不同。有点像

public static Connection con = DriverManager.getConnection(url, user, pass);

然后在我需要的地方用类似的东西引用它

classname.con.createStatement();

最佳答案

这取决于您的应用程序。您应该按照您的需要编写代码——但是大型应用程序的一个 session 可能会带来问题。

例如线程安全。如果多个用户连接到您的应用程序,一个 session /连接超出范围。

我会为每个请求使用一个连接——使用一个额外的连接池和最大数量的打开连接。

因为使用连接会抛出异常,所以将您的代码放在 try-with-resources block 中,然后您的连接会自动关闭。

try (Connection con = DriverManager.getConnection(myConnectionURL);) {
    // grab data
} catch (SQLException e) {
    e.printStackTrace();
}

关于java - 是始终打开一个连接更好,还是每次需要某事时都建立一个连接更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31532225/

相关文章:

postgresql - 仅对支持类型的列执行 LIKE 操作

java - 使一组函数全部返回唯一值而无需硬编码数字?

java - 这个 while 循环不会给我返回与 for 循环相同的结果

database - Matlab数据库准备语句和绑定(bind)变量

java - JDBC 和 PostgreSQL - 如何根据另一个 int 在同一行中插入 int

postgresql - 如何解决错误: could not access file "pglogical": No such file or directory

java - apache httpclient 使用 https 代理 : peer not authenticated

java - 在 Java 中设置一个整数的范围

java - 我想使用 ArrayList 在我的控制台中显示来自数据库的所有数据

MySQL - 导入美国日期时间格式 : "4/18/2017 22:15" 的 CSV 文件