DataSource 예제1 - DriverManager

Minseo Kang·2023년 3월 23일
0
post-thumbnail

01. DriverManger를 이용한 테스트 코드 작성


@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());
}

실행 결과




02. DataSourceDriverManger를 이용한 테스트 코드 작성


  • 기존 코드와 유사하지만 DriverManagerDataSourceDataSource를 통해 커넥션 획득 가능
  • 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();
}

실행 결과




03. 파라미터 차이


DriverManger

  • 커넥션 획득할 때 마다 URL, USERNAME, PASSWORD 같은 파라미터를 계속 전달해야 함

DataSource

  • 처음 객체를 생성할 때만 파라미터를 넘김
  • 커녁센을 획득할 때는 dataSource.getConnection()만 호출



04. 설정과 사용


설정과 사용의 분리

  • 설정
    - DataSource 만들고 필요한 속성들을 사용해 URL, USERNAME, PASSWORD 같은 부분을 입력하는 것
    - 설정과 관련된 속성들은 한 곳에 있는 것이 유지보수에 유연하게 대처 가능
  • 사용
    - 설정은 신경쓰지 않고, DataSourcegetConnection()만 호출하면 됨

설정과 사용의 분리 설명

  • URL, USERNAME, PASSWORD 과 같은 속성에 의지할 필요 없음
  • DataSource만 주입받아서 getConnection()만 호출하면 됨
  • Repository는 DataSource만 의존하고, 이러한 속성을 몰라도 됨
  • 애플리케이션 개발 시 설정은 한 곳에서, 사용은 수 많은 곳에서 함
  • 객체를 설정하는 부분과, 사용하는 부분을 명확하게 분리 가능

0개의 댓글