하지만 여러명의 사용자의 접근이 있는 웹 에플리케이션의 경우 데이터베이스 연결시에는 커넥션 풀(Connection Pool)을 이용하는 게 비용적 측면에서 훨씬 좋다고 한다.
try {
Class.forName(driverPath);
Connection con = DriverManager.getConnection(address, userName, password); // [1]
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, id);
ResultSet rs = get.executeQuery();
// ....
} catch (Exception e) { }
} finally {
rs.close();
ps.close();
}
위의 코드처럼 DB서버 접속하는 과정을 HTTP요청이 있을때마다 반복해야 한다는 이야기이다.
이렇게 물리적으로 DB에 최초로 접속하는 과정은 성능저하가 크다.
즉 클라이언트가 요청을 보낼때마다 커넥션을 얻는 작업은 비효율적이라는 얘기이다.
다음은 커넥션 풀의 정의이다.
커넥션 풀은 WAS 실행 시 일정량의 Connection 객체를 미리 생성한다.
-> Pool이라는 공간(Cache)에 저장한다. -> DB연결 요청이 있을 때마다 Pool에서 Connection 객체를 꺼내서 사용하고 사용이 끝나면 다시 Pool에 반납한다.
reference