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

Liquibase는 자바 애플리케이션에서 데이터베이스 스키마를 관리하기 위한 도구입니다. 이를 사용하면 데이터베이스 스키마를 손쉽게 버전 관리하고, 변경 사항을 적용하고, 롤백할 수 있습니다.

Liquibase 설정하기

먼저, Liquibase를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같은 의존성을 추가합니다.

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

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같은 의존성을 추가합니다.

implementation 'org.liquibase:liquibase-core:4.3.5'

Liquibase 구성 파일 작성하기

Liquibase를 사용하기 위해선, liquibase.properties 파일을 생성하거나 설정을 프로그래밍적으로 작성해야 합니다.

다음은 liquibase.properties 파일의 예시입니다.

driver: com.mysql.jdbc.Driver
classpath: lib/mysql-connector-java.jar
url: jdbc:mysql://localhost/mydatabase
username: myuser
password: mypassword

또는, Java 코드에서 직접 설정을 작성할 수 있습니다.

Liquibase liquibase = new Liquibase();
liquibase.setChangeLog("path/to/changelog.xml");
liquibase.setDataSource(dataSource);

변경 사항 정의하기

Liquibase는 변경 사항을 XML 또는 YAML 형식의 파일에서 정의합니다. 이를 청크로그 파일(Changelog file)이라고 합니다.

다음은 changelog.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-4.xsd">

    <changeSet author="myname" id="1">
        <createTable tableName="users">
            <column name="id" type="INT">
                <constraints primaryKey="true" nullable="false" />
            </column>
            <column name="name" type="VARCHAR(255)">
                <constraints nullable="false" />
            </column>
        </createTable>
    </changeSet>

</databaseChangeLog>

위의 예시에서는 users 테이블을 생성하는 변경 사항을 정의하였습니다.

변경 사항 적용하기

변경 사항을 적용하기 위해서는 Liquibase를 실행해야 합니다.

liquibase.update();

이를 실행하면 changelog.xml에 정의된 변경 사항이 데이터베이스에 적용됩니다.

변경 사항 롤백하기

이전 버전의 스키마로 롤백하려면 다음을 실행합니다.

liquibase.rollback(tag, context);

tag는 변경 사항의 고유 식별자로, 롤백할 버전을 지정합니다.

결론

Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 스키마를 관리하는 방법에 대해 알아보았습니다. Liquibase를 사용하면 변경 사항을 쉽게 추적하고 데이터베이스 스키마를 효율적으로 관리할 수 있습니다.