본문 바로가기
MySql

MySQL 전체 응용 프로그램에서 하나의 데이터베이스 연결 개체를 어떻게 사용할 수 있습니까?

by 베이스 공부 2020. 12. 15.
반응형

연결 개체를 반환하는이 클래스를 만들었습니다. MySQL 데이터베이스를 사용했습니다.

public class Connect_db {        
    public Connection getConnection(String db_name,String user_name,String password)
    {
        Connection con=null;
        try
        {
        Class.forName("com.mysql.jdbc.Driver");
        con=DriverManager.getConnection("jdbc:mysql://localhost/"+db_name+"?user="+user_name+"&password="+password);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        return con;        
    }
}  

이제 내가 원하는 것은이 클래스를 한 번 인스턴스화하고 연결 개체를 얻는 것입니다. And I want to use this same object in entire application. 또 다른 솔루션도 높이 평가 될 것입니다.

 

해결 방법

 

싱글 톤 패턴이 필요하다고 가정합니다. 여기에 간단한 예가 있습니다.

public class Connect_db {        
    static Connection con=null;
    public static Connection getConnection()
    {
        if (con != null) return con;
        // get db, user, pass from settings file
        return getConnection(db, user, pass);
    }

    private static Connection getConnection(String db_name,String user_name,String password)
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://localhost/"+db_name+"?user="+user_name+"&password="+password);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        return con;        
    }
} 

그러면 다음과 같은 연결을 사용할 수 있습니다.

Connect_db.getConnection().somemethods();

그러나 여러 스레드가 데이터베이스에 요청을 시도 할 때 다중 스레드 환경에서 이것이 어떻게 작동하는지 생각해야합니다.

 

참조 페이지 https://stackoverflow.com/questions/20666658

 

 

반응형

댓글