mysql如何在java中避免重复的数据库连接?
我有两门课。C_DB和C_测试
在C_DB中,getConnection()方法返回一个连接。如果我多次调用getConnection(),它将重新连接到数据库并返回多个连接
有什么办法可以避免这种情况吗?我想检查连接是否存在,然后返回该连接,而不是创建一个新连接。因此,只有1个到db的连接
C_DB
public class C_DB {
Connection con;
public C_DB() {
String dbLink = "jdbc:mysql://localhost:3306/database";
String dbUser = "root";
String dbPass = "";
try {
con = DriverManager.getConnection(dbLink, dbUser, dbPass);
} catch (SQLException e) {
throw new IllegalStateException("DB Errors: ", e);
}
}
public Connection getConnection() {
return con;
}
}
C_检验
public class C_Test {
public static void main(String[] args) throws Exception {
Connection con1 = new C_DB().getConnection(); // new connection
Connection con2 = new C_DB().getConnection(); // new duplicate connection
Connection con3 = new C_DB().getConnection(); // new duplicate connection
}
}
# 1 楼答案
您应该使用
Singleton
设计模式来避免多个实例比如:
并通过以下方式获取连接:
# 2 楼答案
您可以使用连接池,并将其最大池大小设置为1,正如@Elliott在评论中指出的,或者您可以实现类似的功能