[java] Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 마이그레이션 유형 관리하기

많은 자바 애플리케이션에서 데이터베이스 구조를 유지 및 관리하는 것은 중요한 작업입니다. 새로운 기능을 추가하거나 변경 사항을 반영할 때마다 데이터베이스 스키마를 업데이트해야 합니다. 이를 위해 일반적으로 올바른 DDL 쿼리를 실행하는 스크립트를 작성하고, 개발 및 프로덕션 환경 모두에서 일관된 방식으로 실행하는 것이 필요합니다.

이번 블로그 포스트에서는 Liquibase라는 도구를 사용하여 자바 애플리케이션의 데이터베이스 마이그레이션을 관리하는 방법에 대해 알아보겠습니다.

Liquibase란?

Liquibase는 데이터베이스 마이그레이션을 관리하기 위한 오픈 소스 라이브러리입니다. 이 도구를 사용하면 데이터베이스 스키마의 변경 사항을 스크립트로 기록하고, 이를 실행하여 데이터베이스를 업데이트할 수 있습니다. Liquibase는 XML, YAML, JSON, SQL 등 다양한 형식의 변경 세트 파일을 지원하며, 자바 코드로도 변경 사항을 정의할 수 있습니다.

Liquibase 설정하기

Liquibase를 자바 애플리케이션에 추가하기 위해서는 다음과 같은 단계를 따라야 합니다.

  1. pom.xml 파일에 Liquibase 종속성을 추가합니다.
<dependency>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-core</artifactId>
  <version>{버전}</version>
</dependency>
  1. liquibase.properties 파일을 생성하여 데이터베이스 연결 정보를 설정합니다. 아래는 예시입니다.
# 데이터베이스 드라이버 클래스
driver: com.mysql.jdbc.Driver
# 데이터베이스 URL
url: jdbc:mysql://localhost:3306/mydatabase
# 데이터베이스 사용자 이름
username: myuser
# 데이터베이스 사용자 비밀번호
password: mypassword

변경 세트 파일 작성하기

Liquibase에서 변경 사항은 변경 세트라는 단위로 관리됩니다. 변경 세트는 하나 이상의 변경 파일로 구성되며, 각 변경 파일에는 추가, 수정, 삭제 등의 데이터베이스 변경 작업이 포함됩니다.

이제 Liquibase 변경 세트 파일을 작성해보도록 하겠습니다. 변경 세트 파일은 changelog.xml과 같은 이름으로 작성되며, 보통 프로젝트의 리소스 디렉토리에 위치시킵니다.

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                                      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">

  <changeSet id="1" author="me">
    <createTable tableName="employees">
      <column name="id" type="INT" autoIncrement="true">
        <constraints primaryKey="true" nullable="false"/>
      </column>
      <column name="name" type="VARCHAR(100)">
        <constraints nullable="false"/>
      </column>
      <column name="age" type="INT"/>
    </createTable>
  </changeSet>

</databaseChangeLog>

이 예제에서는 employees 테이블을 생성하는 변경 세트를 정의하였습니다.

Liquibase 실행하기

이제 Liquibase를 사용하여 데이터베이스를 업데이트해보겠습니다. 만일 Maven을 사용하는 경우, 다음과 같은 커맨드를 실행하면 됩니다.

mvn liquibase:update

위 커맨드를 실행하면 changelog.xml 파일에 정의된 변경 세트가 데이터베이스에 적용됩니다. 만일 이미 적용된 변경 세트라면 Liquibase는 자동으로 무시하여 중복 적용을 방지합니다.

결론

이제 Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 마이그레이션을 관리하는 방법에 대해 알아보았습니다. Liquibase를 사용하여 데이터베이스 변경 사항을 추적하고 자동으로 업데이트하는 것은 개발자에게 많은 혜택을 제공합니다. 이를 통해 애플리케이션 업데이트를 보다 안전하고 일관성 있게 수행할 수 있습니다.

자세한 Liquibase 사용법과 고급 기능에 대한 자세한 내용은 Liquibase 공식 문서를 참고하세요.