[Spring 3.1] EmbeddedDatabaseBuilder
빌더 패턴이 꽤 유용하다는 걸 알게 됐다. 외울 수 밖에 없던 API가 외우지 않아도 되는 API로 변모하는 모습을 보게 됐다. 물론 자바가 static 타입 언어이고, IDE 지원이 빠방하다는 것도 한 몫 했을 것이다.
오늘도 예제를 만들다가 문득.. 이전에 만들었던 EmbeddedDatabaseFactory 코드를 찾아보게 되었다. 메모리 DB는 예제용으로 사용하기 정말 좋다. 별다른 DB 설정 없이 예제를 바로 실행할 수 있기 때문이다.
이전에 블로깅했던 EmbeddedDB 설정은 다음과 같은 과정을 거쳐야 한다.
- EDF 객체 생성
- EDF 객체에 DB 이름과 DB 종류 설정
- RDP(ResourceDatabasePopulator) 객체 생성
- RDP에 스프링 Resource 추상화 사용해서 스크립트 추가
- EDF에 RDP 객체 설정
- EDF.getDatabase() 호출
족히 6~7 라인은 필요한 과정이다. 코드는 이전 글에 있으니까 생략. 게다가 외우고 있어야 하는 API가 최소 세개 등장한다. EDF, RDP, Resource 게다가 마지막에 getDatabase() 메서드 호출까지.. 알고 이어야 한다.
빌더 패턴으로 바뀌면 다 필요 없고, EDB(EmbeddedDatabaseBuilder)만 알면 된다. 그런 다음 네 가지 작업만 하면 된다.
- DB 이름 설정
- DB 종류 설정
- 스크립트 추가
- build()
코드는 다음과 같다.
[java]@Bean(destroyMethod = "shutdown")
public DataSource dataSource(){
return new EmbeddedDatabaseBuilder()
.setName("bookDB")
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:whiteship/book-schema.sql")
.build();
}[/java]