하나의 범위, 자동 반납

세 리소스를 같은 try 범위에 넣으면 종료 시점이 하나로 묶인다.

정상 종료든 예외 발생이든 정리 순서는 바뀌지 않는다. 가장 마지막에 conn.close()가 호출되면서 커넥션은 닫히는 대신 풀로 반환된다.

try-with-resources 안에서 수명주기 공유

조회에 필요한 객체를 한 블록 안에 선언하면, 어떤 리소스가 무엇에 의존하는지도 한눈에 보인다.

같은 블록 안에 선언
1
Connection conn 커넥션 풀에서 대여
2
PreparedStatement pstmt conn으로 SQL 실행 준비
3
ResultSet rs 조회 결과를 순회
핵심은 close()를 흩어 놓지 않고, 리소스 획득과 반납 책임을 같은 범위에 묶는 것이다.
블록이 끝나면 역순으로 정리

예외가 생겨도 같은 경로를 타므로, 누락된 반납 코드 때문에 풀이 잠기는 상황을 줄인다.

정상 종료 예외 발생
1
rs.close() 가장 안쪽 결과 집합부터 정리
2
pstmt.close() 실행에 사용한 statement 해제
3
conn.close() 물리 종료가 아니라 풀로 반환
학습 포인트

try-with-resources는 "예외가 나도 커넥션이 반드시 풀로 돌아간다"는 운영 의미를 코드 구조 자체로 보장한다.