我正在学习MySQL数据库,我无法理解一个概念。假设同一类中有两种方法,如下所示。现在,我是否必须使用Connection connect = dbConnection.getDBConnection();在每种方法中,还是有不同的方式来声明一个连接并在多个方法中使用它?:
mockBackend.verifyNoOutstandingExpectation();
答案 0 :(得分:0)
创建连接是一项代价高昂的操作,因此我认为您应该在应用程序启动时打开连接,并在退出时关闭它。
如果你的程序不是多线程的,你可以使用一个简单的全局对象,否则应该使用其他策略。
您可以使用返回连接的方法为您的应用创建单例。
public class App {
private static App self;
private Connection connection;
private App(){
}
public synchronized App getInstance(){
if(self == null){
self = new App();
}
return self;
}
public synchronized Connection getConnection()throws SQLException {
if(connection==null || !isValid(connection)){
// Create a new connection
}
return connection;
}
private boolean isValid(Connection conn) {
// Check if the connection is valid otherwise return false
return false;
}
public static synchronized void close(){
try{
self.connection.close();
} catch (SQLException e){
// Swallow exception
} finally {
self = null;
}
}
}
你可以在任何地方获得这样的连接:
Connection conn = App.getInstance().getConnection();
你应该确保在退出时关闭连接,可能是关闭钩子。
您还可以在连接周围创建一个包装器,将所有连接方法转发到原始连接,但close表示连接 available ,这样您就可以创建类似1连接池的内容
如果连接可用,则退回,否则您要么等待,要么扔或做最适合您的应用。