[java] Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 스키마 모델링하기

소개

Liquibase는 자바 애플리케이션의 데이터베이스 스키마 관리를 위한 오픈 소스 도구입니다. 이를 사용하면 데이터베이스 스키마 변경을 추적하고 관리할 수 있으며, 자동으로 스키마 마이그레이션을 수행할 수 있습니다. 이 글에서는 Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 스키마를 모델링하는 방법에 대해 알아보겠습니다.

Liquibase 설치 및 설정

  1. 먼저 프로젝트의 pom.xml 파일에 Liquibase 의존성을 추가합니다. ```xml
org.liquibase liquibase-core 4.4.3
2. Liquibase 설정 파일을 생성합니다. `liquibase.properties`나 `liquibase.xml`과 같은 이름으로 파일을 생성합니다.

### 변경 세트 정의하기
1. 변경 세트를 정의하는 XML 파일을 생성합니다. 파일 이름은 `changelog.xml`이 될 수 있습니다.
2. 변경 세트에는 스키마 변경을 위한 여러 변경 내역(changeSet)을 포함합니다. 예를 들어, 새로운 테이블을 추가하거나, 컬럼을 변경하거나, 인덱스를 생성하는 등의 작업이 포함될 수 있습니다.
3. 변경 세트는 순차적으로 실행되므로, 변경 내역의 순서가 중요합니다.

```xml
<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="your_name">
        <createTable tableName="users">
            <column name="id" type="INT">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="VARCHAR(100)">
                <constraints nullable="false"/>
            </column>
            <column name="email" type="VARCHAR(255)"/>
        </createTable>
    </changeSet>

    <changeSet id="2" author="your_name">
        <addNotNullConstraint tableName="users" columnName="email"/>
    </changeSet>

</databaseChangeLog>

Liquibase 실행

  1. 변경 세트를 적용하기 전에 Liquibase를 실행하여 현재 데이터베이스의 상태를 확인합니다. 예를 들어, status 명령어로 변경 세트를 적용하기 전의 상태를 확인할 수 있습니다.
    liquibase --changeLogFile=changelog.xml status
    
  2. 변경 세트를 적용하려면 update 명령어를 사용합니다.
    liquibase --changeLogFile=changelog.xml update
    
  3. 변경 세트를 롤백하려면 rollback 명령어를 사용합니다.
    liquibase --changeLogFile=changelog.xml rollback 2
    

결론

Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 스키마를 모델링하는 방법에 대해 알아보았습니다. Liquibase는 데이터베이스 스키마 변경의 추적과 관리를 도와주며, 자동으로 스키마 마이그레이션을 수행할 수 있습니다. 이를 통해 애플리케이션의 데이터베이스 스키마 변경 작업을 보다 효율적으로 관리할 수 있습니다.

참고 자료