2013-07-31 2 views
1

저는 Java에서 Datatbase를 사용하여 새로운 기능을 제공하고 있습니다. 올바른 방법으로 작업하고 있는지 궁금해하고 있습니다. 내 코드에서 모든 DB 인터페이스는 DataAccess라는 코드 내에서 수행됩니다.DB에서 업데이트/쿼리하는 정확한 방법

isValidOperator() 함수를 입력하기 전에 연결 (connBlng)을 열었습니다.

올바른 방법일까요? 또는 DB에 액세스해야 할 때마다 연결을 열고 닫아야합니까?

if(da.StartBlngConnection() == null) 
    return "ERROR" 
DataAccess da = new DataAccess(); 
da.isValidOperator("123")  

//this is code from DataAccess Class 
public Boolean isValidOperator(String dn) { 
    System.out.println(npgReqID + " - " + LOG_TAG + "inside isValidOperator : " + dn); 
    PreparedStatement prepStmt = null; 
    ResultSet queryResult = null; 
    try{ 
     prepStmt = connBlng.prepareStatement("select network_id, network_identifier from operators where network_identifier = ?"); 
     prepStmt.setString(1, dn); 
     queryResult = prepStmt.executeQuery(); 
     if (queryResult.next()) { 
      return true; 
     } 
    }catch(Exception e){ 
     System.out.println(npgReqID + " - " + e); 
     DBLog("", new Date(),"" , npgReqID , "" ,"" , MakeSureNotOutOfRange(GetStackTrace(e),4000), "" , ""); 
     return false; 
    } finally{ 
     closeStatmentandRS(queryResult, PreparedStatement); 
    } 

    return false; 
} 
+0

finally 블록에서는'queryResult','PreparedStatement' 만 닫습니다. connBlng (연결)를 닫아야합니다. 열려있는 연결 수가 지정된 제한을 초과하지 않으면 닫아야합니다. 또는 어떤 종류의 연결 풀링을 사용해야합니다. – user75ponic

+0

프로그램 시작 부분에 하나의 연결을 열었습니다. 끝에서 닫혀 있는지 확인합니다. – susparsy

+0

프로그램 실행 후 '연결'이 닫히고 있으면 정상입니다. – user75ponic

답변

0

JDBC plain은 매우 사용하기 쉬운 API는 아닙니다. Lightwight JDBC 래퍼 인 Dalesbread https://github.com/Blackrush/Dalesbred을 살펴 보시기 바랍니다. 다음은 JDBC 래퍼에 대한 일반적인 설명입니다. simple jdbc wrapper.

나는 DB 연결을 항상 닫으라고 제안하지 않으므로, 풀링을 사용해야합니다. 일반적으로 DB 연결을 만드는 것은 비용이 많이 듭니다.