앞의 Statement 인터페이스는 SQL문을 실행하기 위해 DB와 연동할 때마다 SQL문을 다시 컴파일해야하므로 속도가 느리다는 단점이 있다
PreparedStatement 인터페이스는 SQL문을 미리 컴파일되어 있기에 속도가 훨씬 빠르다
앞에서 DB 연동 과정은 클라이언트에서 요청할 때 마다 DB를 연결하기 위해 Connection 객체를 얻은 뒤, 작업하는 방식이기에 시간이 많이 소요된다
이런 시간 소요를 줄이기 위해 웹 서비스가 실행되기 전 미리 데이터베이스와 연결시켜 유지하는 기술을 ConnectionPool이라 부른다
필요한 자원을 키/값으로 저장한 후 필요할 때 키를 이용해 값을 얻는 자바 API다
톰캣 컨테이너의 경우 ConnectionPool 객체를 생성하면 이 객체에 대한 JNDI 키를 미리 설정해 놓는다
ConnectionPool에 대한 설정을 하기 위해서 톰캣 서버 설정 파일, context.xml에 Resource를 입력한다
ConnectionPool에는 다수의 Connection 객체가 생성되어있다. 이를 직접 다루기에는 힘들기에 DataSource라는 개념을 도입하여 사용한다