[java] Liquibase를 사용하여 자바 애플리케이션의 테이블 구조 변경하기

Liquibase는 데이터베이스 스키마 버전 관리 도구로서, 자바 애플리케이션의 테이블 구조를 유지하고 변경하기 위해 사용됩니다. 이를 통해 개발자는 애플리케이션을 업데이트하거나 배포할 때 데이터베이스 스키마의 일관성을 유지할 수 있습니다.

Liquibase 설치 및 설정

Liquibase를 사용하기 위해 먼저 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가합니다:

<dependencies>
  <dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>4.3.5</version>
  </dependency>
</dependencies>

Liquibase는 XML 또는 YAML 기반의 변경 로그 파일을 사용하여 테이블 구조 변경을 정의합니다. 자바 애플리케이션에서는 보통 resources 폴더에 changelog.xml 또는 changelog.yaml 파일을 생성하여 변경 로그를 작성합니다.

테이블 구조 변경하기

다음은 Liquibase를 사용하여 자바 애플리케이션의 테이블 구조를 변경하는 예제입니다.

<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-4.3.xsd">

    <changeSet id="1" author="your-name">
        <createTable tableName="customer">
            <column name="id" type="INT">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="first_name" type="VARCHAR(50)">
                <constraints nullable="false"/>
            </column>
            <column name="last_name" type="VARCHAR(50)">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>

    <changeSet id="2" author="your-name">
        <addColumn tableName="customer">
            <column name="email" type="VARCHAR(100)">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="3" author="your-name">
        <modifyColumn tableName="customer" columnName="email">
            <constraints nullable="true"/>
        </modifyColumn>
    </changeSet>

</databaseChangeLog>

위 예제에서는 customer 테이블을 생성하고, 이후에 email 필드를 추가하고 이 필드의 null 제약 조건을 변경하는 세 가지 변경 로그를 정의하였습니다. 해당 파일을 작성한 후, 이를 애플리케이션에 포함시켜 Liquibase가 변경을 자동으로 적용하도록 설정할 수 있습니다.

Liquibase 실행하기

프로젝트를 빌드하고 실행하는 시점에 Liquibase를 실행하여 변경 로그를 적용할 수 있습니다. 일반적으로 이해를 돕기 위해 빌드 스크립트 또는 IDE의 환경 설정에서 Liquibase를 실행하도록 구성하는 것이 좋습니다.

Maven을 사용하는 경우, 다음 명령어를 실행하여 Liquibase를 실행할 수 있습니다:

mvn liquibase:update

이 명령은 changelog.xml 또는 changelog.yaml 파일을 기준으로 데이터베이스의 테이블 구조를 변경하게 됩니다.

마무리

이렇게 Liquibase를 사용하여 자바 애플리케이션의 테이블 구조를 변경할 수 있습니다. Liquibase는 멀티플랫폼 및 멀티디비 모델을 지원하며, 다양한 데이터베이스와 호환됩니다. 자세한 내용은 Liquibase 공식 문서를 참고하시기 바랍니다.