Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

JDBC 연결은 꼭 닫아야 할까요? 올바른 연결 해제 방법

JDBC 연결을 닫아야 하는 이유

JDBC 프로그램이 종료될 때는 각 데이터베이스 세션을 정상적으로 마무리하기 위해 모든 데이터베이스 연결을 명시적으로 닫아야 합니다. 만약 실수로 연결을 닫지 않더라도 Java의 가비지 컬렉터(Garbage Collector)가 더 이상 사용되지 않는 객체를 정리할 때 연결을 자동으로 닫아 주긴 합니다.

하지만 특히 데이터베이스 프로그래밍에서 가비지 컬렉션에 의존하는 것은 매우 좋지 않은 프로그래밍 습관입니다. 가비지 컬렉터가 언제 실행될지 예측할 수 없어 그동안 불필요한 연결이 계속 유지되고, 이는 리소스 낭비와 성능 저하로 이어질 수 있습니다. 따라서 항상 Connection 객체의 close() 메서드를 호출해 연결을 직접 닫는 습관을 들이는 것이 바람직합니다.

finally 블록으로 연결 해제 보장하기

예외 상황에서도 연결이 반드시 닫히도록 보장하려면 코드에 finally 블록을 사용하는 것이 좋습니다. finally 블록은 예외가 발생하든 발생하지 않든 항상 실행되기 때문에, 연결 해제 처리를 넣기에 가장 적합한 위치입니다.

JDBC 연결을 닫으려면 다음과 같이 close() 메서드를 호출하면 됩니다.

conn.close();

실제로는 아래와 같이 try-catch-finally 구조 안에서 안전하게 처리하는 것이 일반적입니다.

try {
    // 데이터베이스 작업 수행
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

참고: try-with-resources 활용

Java 7 이상에서는 try-with-resources 문법을 사용하면 더욱 간결하게 연결을 관리할 수 있습니다. try 블록이 끝나면 선언된 리소스가 자동으로 닫히므로, 별도의 finally 블록 없이도 안전하게 연결을 해제할 수 있습니다.