0

PostgreSQL 용 JDBC 드라이버를 사용하고 있으며 저장 프로 시저를 호출하려고합니다.Java에서 저장 프로 시저 호출

public void callProcedure(int someValue) { 

    Connection con = null; 
    try { 
     con = connectionPool.getConnection(); 

     CallableStatement st = con.prepareCall("{ call some_procedure(?) }"); 
     st.setInt(1, someValue); 
     st.execute(); 
     st.close(); 
    } 
    catch (SQLException e) { 
     System.out.println(e.getMessage()); 
    } 
    finally  { 
     if (con != null) { 
      try { con.close(); } // assure connection "goes" back to the pool 
      catch (SQLException e) { } 
     } 
    } 
} 

이제이 방법 callProcedure가 가능 시간 만 달러를 호출 할 수 있다고 가정하자 :

내가 다음과 같이 저장 프로 시저를 호출하는 방법을 가정합니다. 내가 생성자에서 내 클래스의 생성자에서 연결도 prepare_the_Call을 만들 경우

(1.) 더 나은 (성능 현명한)이 될 것인가, 그래서 이런 식으로 뭔가 : 내 질문은

된 CallableStatement 일;

public Constructor() { 
    Connection con = connectionPool.getConnection(); 
    st = con.prepareCall("{call some_procedure(?)}"); 
} 

다음 방법 내부

은 수행

public void callProcedure(int someValue) { 
    try { 
     st.setInt(1, someValue); 
     st.execute(); 
     st.close(); 
    } 
    catch (SQLException e) { 
     System.out.println(e.getMessage()); 
    } 
    finally  { 
     if (con != null) { 
      try { con.close(); } // assure connection "goes" back to the pool 
      catch (SQLException e) { } 
     } 
    } 
    } 

(2.)은 성명을 실행 한 후 close 연결 항상 이해가 있습니까? 아니면 그대로 두어야합니까? 내 이해에서, 연결을 닫으면 다른 사람이 사용할 수 있도록 연결을 다시 제공합니다. 그 맞습니까?

답변

1
  1. 해당 구문을 생성자에 추가해도 성능이 향상되지 않습니다. 객체 라이프 사이클의 다른 지점에서 Connection을 작성하는 것입니다.

  2. 당신이 맞습니다. Connection이 자동으로 연결 풀에 연결될 때까지 기다리지 않고 닫습니다. 이를 수행하는 것이 가장 좋습니다.

+0

나는 얼마 동안이 작업을 시도해 왔으며 Java에서 SQL Server 데이터베이스로 연결할 수 없었습니다. 저장 프로 시저가 있고 테이블의 5 개 필드를 JTable에로드하려고합니다. –

관련 문제