서블릿 환경 (특히 Tomcat 5.5)에서 준비된 문을 캐시하는 방법을 찾고 있습니다. 이는 준비된 명령문이 작성되는 횟수, 즉 connection.prepareStatement(sql)
이 호출되는 횟수를 줄이기위한 것입니다.Tomcat에서 준비된 문을 캐싱하기위한 좋은 전략은 무엇입니까?
초기 아이디어는 PreparedStatement
개체를 세션에 저장하는 것이 었습니다. 여기서 키 (특성 이름)는 쿼리 자체입니다. 이것은 또한 느리게 행해질 수 있습니다.
그러나 JDBC 드라이버 구현에 따라 동일한 준비된 문에 2 개의 스레드 (또는 요청)가 동시에 액세스 할 수 있으므로 잘못된 매개 변수가 설정되는 등의 사실에 대해 경고합니다. 따라서이 명령문 오브젝트에 대한 액세스는 동기화되어야합니다.
이것을 달성하기위한 좋은 전략은 무엇입니까?
이렇게하려면 tomcat에 내장 된 메서드가 있습니까? 나는 poolPreparedStatements
DBCP 매개 변수를 언급 한 this answer을 보았지만 내가 찾고있는 것과 동일한 의미를 지닌다면 문서에서 완전히 명확하지 않다.