템플릿이란 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경 되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법

커넥션이 계속 닫히지 않고 쌓이면 어느 순간 커넥션 풀에 여유가 없어지고 리소스가 모자란다는 심각한 오류를 내며 서버가 중단될 수 있따.

따라서 코드는 한번 실행되고 애플리케이션 전체가 종료되는 간단한 예제에서는 괜찮지만 장기간 운영되는 다중 사용자를 위한 서버에 적용하기에는 치명적인 위험을 내포하고 있다.

close() 메서드는 리소스를 반환한다는 의미

Connection과 PreparedStatement는 보통 풀 방식으로 운영된다.

JDBC try/catch/finally 코드의 문제점

→ 모든 메서드 마다 반복

빼먹으면 커넥션 풀이 다 찼다는 에러 발생할 수 있음.

테스트 통해 DAO 마다 예외 상황에서 리소스 반납하는지 체크하게 하는것도 좋은 생각이지만 막상 적용하기는 쉽지 않다.

코드를 효과적으로 다룰 수 있는 방법 : 변하지 않는, 그러나 많은 곳에서 중복되는 코드와 로직에 따라 자꾸 확장되고 자주 변하는 코드를 잘 분리해내는 작업

디자인 패턴 적용

  1. 메서드 추출