[java] Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 정규화하기

데이터베이스 스키마의 변경사항을 관리하는 것은 애플리케이션 개발 및 유지보수에 있어 매우 중요합니다. 이를 위해 Liquibase라는 도구를 사용하여 데이터베이스 스키마의 정규화 및 업데이트를 수행할 수 있습니다. 이 글에서는 Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 정규화하는 방법에 대해 알아보겠습니다.

Liquibase란?

Liquibase는 데이터베이스 스키마의 변경사항을 추적하고 관리하기 위한 오픈 소스 도구입니다. 이를 사용하면 데이터베이스 스키마의 이력을 추적하고, 개발자가 변경사항을 적용하거나 롤백할 수 있습니다. Liquibase는 XML이나 YAML과 같은 텍스트 기반의 스크립트 형태로 변경사항을 정의하며, 변경사항이 적용될 때마다 데이터베이스 스키마의 버전이 증가합니다.

Liquibase 사용하기

1. 의존성 추가

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

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

2. 변경사항 정의하기

변경사항을 정의하는 스크립트를 작성해야 합니다. Liquibase는 XML 또는 YAML 형식을 지원하므로, 원하는 형식으로 스크립트를 작성할 수 있습니다. 변경사항은 새로운 테이블 추가, 테이블의 컬럼 변경 등 다양한 작업을 포함할 수 있습니다.

다음은 예시로써, 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.1.xsd">

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

3. 변경사항 적용하기

Liquibase를 사용하여 변경사항을 적용해 봅시다. 이를 위해 Liquibase CLI를 사용할 수도 있고, 자바 애플리케이션 내에서 Liquibase를 직접 활용할 수도 있습니다.

자바 애플리케이션에서 Liquibase를 활용하는 방법은 다음과 같습니다:

import liquibase.Liquibase;
import liquibase.database.DatabaseConnection;
import liquibase.database.DatabaseFactory;
import liquibase.database.jvm.JdbcConnection;
import liquibase.resource.ClassLoaderResourceAccessor;

import java.sql.Connection;
import java.sql.DriverManager;

public class LiquibaseExample {

    public static void main(String[] args) {
        try {
            Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydatabase", "username", "password");
            DatabaseConnection databaseConnection = new JdbcConnection(connection);
            Liquibase liquibase = new Liquibase("changelog.xml", new ClassLoaderResourceAccessor(), databaseConnection);
            liquibase.update("");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 예제에서는 PostgreSQL 데이터베이스에 연결하고, changelog.xml에 기술된 변경사항을 적용하는 코드입니다.

마무리

Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 스키마 정규화를 수행할 수 있습니다. 이를 통해 개발자는 데이터베이스 스키마 변경사항을 관리하고, 롤백과 같은 작업을 수행할 수 있습니다. Liquibase는 데이터베이스 변경사항 추적을 위한 강력한 도구로써, 애플리케이션의 유지보수성과 데이터 일관성을 높일 수 있습니다.


참고 문서: