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

자바 애플리케이션을 개발할 때, 데이터베이스 연결 정보를 설정하는 것은 중요한 과정입니다. 각각의 환경에 따라 데이터베이스 URL, 사용자 이름, 비밀번호 등이 달라지기 때문에, 이러한 파라미터를 관리하는 방법이 필요합니다. 이번 글에서는 Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 파라미터를 관리하는 방법을 알아보겠습니다.

1. Liquibase란?

Liquibase는 데이터베이스 스키마 관리를 위한 오픈 소스 도구입니다. 데이터베이스 스키마의 버전 관리와 변경 이력을 추적하여 애플리케이션의 데이터베이스를 업데이트하는 역할을 수행합니다. Liquibase를 사용하여 데이터베이스 파라미터 관리뿐만 아니라, 데이터베이스 스키마의 변경도 손쉽게 관리할 수 있습니다.

2. Liquibase 설정하기

먼저, Maven 프로젝트를 생성하고 pom.xml 파일에 다음과 같은 의존성을 추가합니다.

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

다음으로, 프로젝트 내에 liquibase.properties 파일을 생성하여 데이터베이스 연결 정보를 설정합니다.

url=jdbc:mysql://localhost:3306/mydatabase
username=myuser
password=mypassword

3. Change Log 파일 작성하기

데이터베이스의 변경 내역을 관리하기 위해 Liquibase는 Change Log 파일을 사용합니다. 프로젝트 내의 src/main/resources/db/changelog 폴더에 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-4.4.xsd">

    <propertyFileRelativeToChangelogFile>true</propertyFileRelativeToChangelogFile>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>

    <!-- 데이터베이스 스키마 변경 내용 작성 -->
    ...

</databaseChangeLog>

${url}, ${username}, ${password}liquibase.properties 파일에서 설정한 값들을 가져오는 변수입니다.

4. 애플리케이션에서 Liquibase 실행하기

애플리케이션을 실행할 때, Liquibase를 사용하여 데이터베이스의 변경 내용을 자동으로 적용할 수 있습니다. 이를 위해 pom.xml 파일에 다음과 같은 Maven 플러그인을 추가합니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>4.4.2</version>
            <configuration>
                <propertyFile>src/main/resources/liquibase.properties</propertyFile>
            </configuration>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>update</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

위의 설정을 추가하면, 애플리케이션을 빌드할 때 process-resources 단계에서 Liquibase가 실행되어 데이터베이스의 변경 내용을 적용합니다. src/main/resources/liquibase.properties 파일을 참조하여 데이터베이스 연결 정보를 설정합니다.

5. 데이터베이스 파라미터의 관리와 변경 내역 추적하기

Liquibase를 사용하면 데이터베이스 파라미터를 손쉽게 관리할 수 있습니다. 데이터베이스 연결 정보가 변경되었을 때, liquibase.properties 파일을 수정하고 애플리케이션을 다시 빌드하면 새로운 데이터베이스 연결 정보가 자동으로 적용됩니다. 또한, changelog.xml 파일을 수정하여 데이터베이스 스키마의 변경 내용을 추적할 수 있습니다.

참고 자료