본문 바로가기

공부/Maven

[서적 핵심 정리] Maven과 데이터베이스 통합

단위 테스트

  • 익히 알려진 대로, 단위 테스트는 개별 소스 단위의 모듈/메소드 등이 원하는 대로 동작하는지 검증하는 테스트를 의미
  • 따라서, 아래와 같이 외부 시스템이 포함되는 테스트의 경우, 원칙적으로는 단위 테스트로 보지 않음 (Working Effectively with Legacy Code, Michael C. Feathers)
    • 데이터베이스에 하는 테스트
    • 네트워크와 통신하는 테스트
    • 파일 시스템에 하는 테스트
    • 테스트를 실행할 때 추가적인 작업이 필요한 테스트 (설정 파일 수정 등)
  • 단, 웹 개발 프로젝트 등에서 데이터베이스를 배제한 단위 테스트는 현실적으로 어려움

메이븐 SQL 플러그인 (sql-maven-plugin)
  • execute Goal을 통해 파일에서 관리하는 모든 SQL 문을 실행할 수 있도록 지원
    • 따라서, sql-maven-plugin을 plugin으로 등록하고, 설정을 통해 테이블 스키마를 생성하는 sql 파일을 매 빌드시 실행하게 하면, 모든 개발자간의 db를 일관되게 유지할 수 있음
    • 주요 설정 값
      • <execution>: 플러그인에 수행할 각 sql 구문들을 설정
      • <execution> / <phase> : 구문을 어떤 메이븐 phase에서 수행할 지 설정
      • <execution> / <goals> / <goal> : execute (SQL 수행)
      • <execution> / <configuration> / <url> : DB 접근자
      • <execution> / <configuration> / <autocommit> : commit 여부
      • <execution> / <configuration> / <srcFiles> / <srcFile> : 수행할 SQL 구문 (file)
      • <execution> / <configuration> / <sqlCommand> : 수행할 SQL 구문 (inline)
  • 해당하는 DB에 대한 JDBC 드라이버를 <plugin>에 포함시켜야 함

Carbon Five Database Migration 플러그인
  • 데이터베이스를 초기화하지 않고, 점진적으로 스키마를 변경해 나가면서 개발하는 것이 가능한 메이븐 데이터베이스 관련 플러그인
  • http://mvn.carbonfive.com/public 원격 저장소를 추가해야 함
  • /src/main/db/migrations 디렉토리에 날짜가 접두어로 붙는 .sql 파일을 생성
  • Goal
    • new : SQL 구문을 입력할 수 있는 파일을 생성해준다.
      • new 를 통해 생성한 파일에 SQL 구문의 변경사항을 입력
    • migrate

      • db-migration 툴은 매 빌드시마다 현재 실행되지 않은 DB 구문만 실행시켜줌으로써 table을 모두 drop한 후 create 하는 것이 아니라, 일부 변경사항만 적용하는 것이 가능 


출처: 자바 세상의 빌드를 이끄는 메이븐 (박재성 저)