스프링부트에서는 자동으로 DDL 스크립트를 실행하여 테이블정보를 변경하고 데이터를 초기화하는 기능을 지원한다.
해당 설정방법은 다음과 같다.
spring.datasource.initialization-mode=always
application.properties에서 spring.datasource.initialization-mode를 always로 설정하면 된다.
만약 데이터베이스 초기화를 하지 않고 싶을 경우 해당 설정을 never로 하면 된다
만약 별도의 DBMS를 활용하는 것이 아닌, 임베디드 DB를 사용해 테스트하는 것이라면 굳이 해당 설정은 해주지 않아도 된다.
이제 데이터베이스 스키마를 변경할 ddl과 데이터를 초기화해줄 dml 스크립트가 입력되어 있는 sql파일을 생성한다.
스키마 관련 ddl은 schema.sql에, 데이터 초기화 관련 dml은 data.sql에 입력하여 Root경로에 해당 파일을 위치하면 초기화를 위한 준비는 끝난다.
이후 프로젝트를 실행하면 두 sql파일에 입력한 sql명령어가 DB에 반영된 것을 확인할 수 있다.
해당 기능과 관련된 정보는 이곳에서 확인할 수 있다.
회사에서 버전이 올라감에 따라 변경된 스키마의 정보를 자동으로 업데이트해주는 기능을 구현한 적이 있다. (자바에서 sql파일 실행하기)
해당 기능에서 작성한 코드를 위의 방법으로 리팩토링할 수 있는지 한번 고민해 봐야겠다.