🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

테스트 코드에서 Connection.close 메서드를 호출해주지 않아도 괜찮나요?

23.02.23 21:38 작성 조회수 449

0

안녕하세요.

이번 수업 시간에 테스트 코드를 통해 커넥션 예제를 보여주셨는데, 코드 상으로는 close 메서드를 호출해주지 않으셔서 질문 남깁니다.

@Slf4j
public class ConnectionTest {
    /**
     * DriverManager
     */
    @Test
    void driverManager() throws SQLException {
        Connection con1 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        Connection con2 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        log.info("con1: class = {}, connection = {}", con1.getClass(), con1);
        log.info("con2: class = {}, connection = {}", con2.getClass(), con2);
    }

    /**
     * DataSourceDriverManager
     */
    @Test
    void dataSourceDriverManager() throws SQLException {
        // DriverManagerDataSource - 항상 새로운 커넥션 획득
        DriverManagerDataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD);
        Connection con1 = dataSource.getConnection();
        Connection con2 = dataSource.getConnection();
        log.info("con1: class = {}, connection = {}", con1.getClass(), con1);
        log.info("con2: class = {}, connection = {}", con2.getClass(), con2);
    }
}

close 메서드를 호출해주지 않아도 내부적으로 알아서 커넥션을 제거해주는 것 같은데, 혹시 이에 대한 보충 설명을 해주실 수 있을까요..?

답변 1

답변을 작성해보세요.

2

안녕하세요. 김회민님

여기서는 간단히 테스트만 하고 넘어가기 때문에 생략한 것이고, 원칙적으로 커넥션을 종료해주셔야 합니다.

테스트가 완전히 종료되는 JVM도 종료되기 때문에 이때 커넥션도 반환됩니다.

감사합니다.

김회민님의 프로필

김회민

질문자

2023.02.24

답변 감사드립니다. JVM이 종료하면서 커넥션도 자동적으로 반환해주는 군요!

채널톡 아이콘