假设我创建了对象来管理连接作为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 我将关闭连接,并且以后无法在单例应用程序中恢复它。你能给我解释一下吗?
浏览堆栈溢出和谷歌但我没有找到答案
您正在静态块内建立连接,并且静态块在类加载期间被加载。因此,要关闭连接,您必须关闭应用程序。
如果你想创建单例,那么创建一个类并将构造函数设为私有,并在该构造函数内部定义你的数据库连接。