해결된 질문
작성
·
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이 종료하면서 커넥션도 자동적으로 반환해주는 군요!