gpt4 book ai didi

java - 静态数据库连接应该如何初始化?

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:10 28 4
gpt4 key购买 nike

这个类是唯一应该访问数据库的类,我想在我的应用程序启动时给它一个连接对象。但是,实例化可能会导致抛出异常,所以我不能这样做:

public class DBManager {
private static Connection conn = Database.getReadOnlyConnection();
...
...
}

我有一个非常丑陋的解决方法,我想知道是否有更好的方法。

public class DBManager {
private static Connection conn = null;
private static DBManager instance = null;

public static DBManager getInstance() throws SQLException, ClassNotFoundException {
if (instance == null){
instance = new DBManager();
}
return instance;
}

private DBManager() throws SQLException, ClassNotFoundException {
conn = Database.getReadOnlyConnection();
}

...
...
}

还有一种选择:

public class DBManager {
private static Connection conn = null;
public static void setConnection(Connection conn) throws NotSupportedException{
if (conn == null){
this.conn = conn;
}
else {
throw new NotSupportedException();
}
}
...
...
}

Java 中有没有更好的方法来处理这个问题?

更新

我决定使用静态初始化 block 。

public class DBManager {
private static Connection conn;
static {
try {
conn = getReadOnlyConnection();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
...
...
}

如果无法访问数据库,这会导致应用程序提前失败,并避免必须确保 DBManager 仅通过实例使用的问题。

最佳答案

你的程序应该更加健壮 - 当然你现在可能有连接,但是如果数据库关闭会发生什么 - 使用与现在没有数据库相同的逻辑,因为数据库稍后会关闭

关于java - 静态数据库连接应该如何初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20367285/

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