MYSQL一个类的一个连接

时间:2017-04-01 22:15:41

标签: java mysql

我正在学习MySQL数据库,我无法理解一个概念。假设同一类中有两种方法,如下所示。现在,我是否必须使用Connection connect = dbConnection.getDBConnection();在每种方法中,还是有不同的方式来声明一个连接并在多个方法中使用它?:

mockBackend.verifyNoOutstandingExpectation();

1 个答案:

答案 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连接池的内容

如果连接可用,则退回,否则您要么等待,要么扔或做最适合您的应用。