인프런 커뮤니티 질문&답변

김회민님의 프로필 이미지
김회민

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

DataSource 예제1 - DriverManager

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

해결된 질문

작성

·

520

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도 종료되기 때문에 이때 커넥션도 반환됩니다.

감사합니다.

김회민님의 프로필 이미지
김회민
질문자

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

김회민님의 프로필 이미지
김회민

작성한 질문수

질문하기