2017-01-26 3 views
0

open 및 close jdbc 연결을 담당하는 SQLConnection 클래스가 있습니다. 연결을 열어야 할 때마다, 클래스 속성을 채우기 위해 xml 파일을 읽은 다음 연결을 엽니 다.연결 클래스. 싱글 톤을 사용해야합니까?

이 클래스에 대한 싱글 톤 디자인 패턴을 만들고 생성자 클래스에서 xml 파일을 읽는 것을 생각합니다.

내가 묻는 질문 : 더 나은 접근 방식과 최상의 성능을 제공하는 것은 무엇입니까? 클래스에 정적 인 지식을 주거나 xml을 읽고 매번 객체 클래스를 만드시겠습니까? 아, 10 ~ ~ 100 명의 사용자가있는 웹 응용 프로그램입니다. 내가하고 같은

은 여기에 있습니다 :

public class SQLConnection { 

    private static SQLConnection instance; 

    String url = ""; 
    String driver = ""; 
    String userName = ""; 
    String password = ""; 

    private SQLConnection() { 

    } 

    public static synchronized SQLConnection getInstance() { 
     if (instance == null) 
      instance = new SQLConnection(); 
      setAtributes(instance); 

     return instance; 
    } 

    public Connection openConnection() { 

     Connection conn = null;  

     try { 
      Class.forName(driver).newInstance(); 
      conn = DriverManager.getConnection(url, userName, password); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return conn; 

    } 

    //read a xml file that have database infos 
    public static void setAtributes(SQLConnection instance){ 

     instance.url = "lalala"; 
     instance.userName = "lalala"; 
     instance.password = "lalala"; 
     instance.driver = "lalala";  
    } 
} 
+2

대신 실제 연결 풀을 사용하십시오. – Kayaman

+1

** 연결에 싱글 톤을 사용하지 마십시오 **. 연결 풀을 사용하십시오. – BackSlash

+2

첫 번째 문장에서 중지되었을 수 있습니다. 싱글 톤 (Singleton), 기간 (Period)을 사용하지 마십시오. 왜 이것이 최선의 방법인지 명확하게 설명 할 수 있습니다. (그리고 거의 없다.) – cHao

답변

0

짧은 답변 : 없음을 내가하고 싶은처럼

다음
public class SQLConnection { 

    String url = ""; 
    String driver = ""; 
    String userName = ""; 
    String password = ""; 

    public Connection openConnection() { 

     Connection conn = null;  
     this.setAtributes();   

     try { 
      Class.forName(driver).newInstance(); 
      conn = DriverManager.getConnection(url, userName, password); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return conn; 

    } 


    public void closeConnection(Connection conn) { 
     try { 
      conn.close(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    //read a xml file that have database infos 
    public void setAtributes(){ 

     this.url = "lalala"; 
     this.userName = "lalala"; 
     this.password = "lalala"; 
     this.driver = "lalala";     
    } 
} 

입니다.

싱글턴 해결 리소스 경합 문제가 있습니다. SQL 연결의 경우 경합이 없으므로 원하는만큼의 연결을 만들 수 있습니다. 싱글 톤 사용에 대한 자세한 내용은 다음을 참조하십시오. What is so bad about singletons?

다른 사람들이 언급 한 것처럼 연결 풀을 사용하는 것이 좋습니다. 연결 풀에서도 더 나은 성능을 얻을 수 있습니다. 연결 풀의 장점 : Why we need a connection pooling for JDBC?

관련 문제