@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
만 의존하고, 이러한 속성을 몰라도 됨