我正在编写一个应用程序,其中一个线程将使用JDBC与MySQL数据库建立永久连接,并且其他任何线程都不会使用此连接。
我的想法是这样的:
import java.sql.Connection;
public class ConHolder {
private Connection con;
public Connection getConnection(int checkTimeout) {
if(!con.isValid(checkTimeout)) {
con.close();
con = createNewConnection();
}
return con;
}
private Connection createNewConnection() {
return /* a newly created connection */;
}
}
这样好吗?或者是否需要实际的连接池?
答案 0 :(得分:1)
我认为没关系,或多或少。唯一可能的问题是:
isValid
不可用,
仍然存在潜在的故障模式,其中连接在调用isValid
的应用程序之间变坏并且尝试使用连接来执行重要的事情 1 。
1 - 请注意,您可以使用典型的连接池获得相同的故障模式。唯一真正的解决方案是通过重新启动事务来处理SQLException是由连接断开引起的情况。