2010-11-23 5 views
0


CallableStatement 및 PreparedStatements가 사전 컴파일됩니다. 그들은 연결과 관련하여 끝났습니까? 내 말은, 앱 서버의 연결 풀에 약 100 개의 연결 개체가 있다고 가정합니다. Callable 및 PreparedStatements를 사용하는 클래스가 있습니다. 상기 방법은 처음 호출하기응용 프로그램 서버에서 호출 가능 및 준비된 문 동작

public void invokePreparedAndCallableStatements(){ 
    //Fetches connection from pool 
    Connection con = getConnectionFromPool(); 
    CallableStatement cs = con.prepareCall(.....); 
    cs.register...(...); 
    cs.execute(); 
    ... 
    ... 
    PreparedStatement st = con.prepareStatement(...); 
    st.setXXX(..); 
    st.executeUpdate(); 
    ... 
} 

, 접속 풀로부터 페치하고 상기 요청을 처리한다 : 즉 사용되는 방법을 말하게한다. 호출 가능 및 Prepared Statements가 컴파일됩니다. 메서드가 다른 99 번 호출 될 때마다 다른 연결이 풀에서 가져올 때마다 - 각 연결에 대한 문을 준수합니까?
이 문맥에서 문장을 사용하는 가장 좋은 방법은 무엇입니까? 연결이 정적이 아니기 때문에 정적 (con.prepareCall() 또는 con.prepareStatement())을 만들 수 없습니다.

답변

1

코드는 실제로 컴파일되어 데이터베이스의 공유 풀에 저장됩니다. 동일한 코드를 사용하는 연결이 여러 개 있으면 캐시의 이점을 얻을 수 있습니다. 컴파일 된 코드는 메모리 제한이 허용하는 한 보관됩니다.

+0

감사합니다. JOTN. 동일한 PL/SQL 프로 시저에 동일한 코드에 대해 여러 개의 컴파일 된 버전이있는 방법이 있습니까? –

0

문이 미리 컴파일됩니다. 풀링은 지정된 매개 변수를 기반으로합니다.

주 : JDBC 3.0을 사용하는 경우 PreparedStatement를 풀링 할 수도 있습니다. 참조 : What's new in JDBC 3.0

관련 문제