连接管理器作为单例

问题描述 投票:0回答:1

假设我创建了对象来管理连接作为signleton,例如:

public class DatabaseConnection {

private static Connection con = null;

static

{ 

String url = "jdbc:`\[`mysql:/`\](mysql://)`/localhost:3306/org";`

String user = "root";
String pass = "root";

try {

Class.forName("com.mysql.jdbc.Driver");

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

}

catch (ClassNotFoundException | SQLException e) {

e.printStackTrace();

}

}

public static Connection getConnection()

{

return con;
}

}

我是否正确理解,通过这种方法,我只创建了一个连接实例并在整个应用程序中使用它。我只需要在退出应用程序之前关闭连接?我问这个问题是因为在教程中被告知最好的选择是使用 try-with-resources 创建连接。但是使用 try-with-resources 或 DatabaseConnection.getConnection().close 我将关闭连接,并且以后无法在单例应用程序中恢复它。你能给我解释一下吗?

浏览堆栈溢出和谷歌但我没有找到答案

java jdbc connection singleton try-with-resources
1个回答
0
投票

您正在静态块内建立连接,并且静态块在类加载期间被加载。因此,要关闭连接,您必须关闭应用程序。

如果你想创建单例,那么创建一个类并将构造函数设为私有,并在该构造函数内部定义你的数据库连接。

© www.soinside.com 2019 - 2024. All rights reserved.