
@Test
void driverManager() throws SQLException {
Connection con1 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
Connection con2 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
log.info("--- use DriverManager ---");
log.info("connection={}, class={}", con1, con1.getClass());
log.info("connection={}, class={}", con2, con2,getClass());
}
실행 결과

DriverManagerDataSource는 DataSource를 통해 커넥션 획득 가능DriverMangerDataSource는 스프링이 제공하는 코드@Test
void dataSourceDriverManager() throws SQLException {
DriverManagerDataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD);
useDataSource(dataSource);
}
private void useDataSource(DataSource dataSource) throws SQLException {
Connection con1 = dataSource.getConnection();
Connection con2 = dataSource.getConnection();
log.info("--- use DriverManagerDataSource ---");
log.info("connection={}, class={}", con1, con1.getClass());
log.info("connection={}, class={}", con2, con2,getClass());
Assertions.assertThat(con1).isNotNull();
Assertions.assertThat(con2).isNotNull();
}
실행 결과

DriverManger
URL, USERNAME, PASSWORD 같은 파라미터를 계속 전달해야 함DataSource
dataSource.getConnection()만 호출설정과 사용의 분리
DataSource 만들고 필요한 속성들을 사용해 URL, USERNAME, PASSWORD 같은 부분을 입력하는 것DataSource의 getConnection()만 호출하면 됨설정과 사용의 분리 설명
URL, USERNAME, PASSWORD 과 같은 속성에 의지할 필요 없음DataSource만 주입받아서 getConnection()만 호출하면 됨DataSource만 의존하고, 이러한 속성을 몰라도 됨