[java] 자바에서 Liquibase 플러그인을 사용하여 스프링 부트 애플리케이션에서 스키마 관리하기

스프링 부트 애플리케이션을 개발하다보면 데이터베이스 스키마를 관리해야 할 때가 있습니다. 그러나 변경된 스키마를 적용하고 관리하는 일은 꽤 까다롭습니다. 이를 위해 Liquibase라는 유용한 플러그인을 사용할 수 있습니다. 이 플러그인은 데이터베이스 스키마를 관리하고 버전 관리할 수 있는 기능을 제공합니다.

Liquibase란?

Liquibase는 데이터베이스 스키마를 관리하기 위한 오픈 소스 라이브러리입니다. XML 또는 YAML 형식의 changelog 파일을 사용하여 데이터베이스 스키마의 변경 사항을 정의하고, 이 변경 사항을 데이터베이스에 적용합니다. Liquibase는 자동으로 변경 내용을 추적하고 업그레이드 스크립트를 생성하여 데이터베이스를 업데이트합니다.

스프링 부트에서 Liquibase 사용하기

스프링 부트 프로젝트에서 Liquibase를 사용하려면 다음 단계를 따르면 됩니다.

단계 1: 의존성 추가

먼저 pom.xml 파일에 Liquibase와 관련된 의존성을 추가해야 합니다. 다음 코드를 <dependencies> 섹션에 추가합니다:

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

단계 2: changelog 파일 작성

다음으로, resources/db/changelog 디렉토리에 Liquibase changelog 파일을 작성해야 합니다. 이 파일은 스키마 변경 내용을 정의합니다. 예를 들어, 001-create-tables.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.4.xsd">

    <changeSet id="1" author="yourname">
        <createTable tableName="users">
            <column name="id" type="bigint" autoIncrement="true" primaryKey="true"/>
            <column name="username" type="varchar(50)"/>
            <column name="email" type="varchar(50)"/>
        </createTable>
    </changeSet>

</databaseChangeLog>

위의 예제에서는 users 테이블을 생성하는 changeSet을 정의하고 있습니다.

단계 3: 스프링 부트 설정

마지막으로, 스프링 부트의 application.properties 파일에 Liquibase 설정을 추가해야 합니다. 다음과 같이 설정합니다:

spring.liquibase.change-log=classpath:db/changelog/001-create-tables.xml

위의 예제에서는 001-create-tables.xml changelog 파일을 사용하도록 설정하였습니다.

변경 내용 적용하기

스프링 부트 애플리케이션을 시작할 때 Liquibase는 설정된 changelog 파일을 기반으로 데이터베이스 스키마를 자동으로 생성합니다. 변경 사항이 있을 경우 Liquibase는 자동으로 해당 스키마를 업데이트합니다.

결론

Liquibase를 사용하면 스프링 부트 애플리케이션에서 데이터베이스 스키마를 쉽게 관리할 수 있습니다. 위의 단계를 따라 Liquibase 플러그인을 스프링 부트 프로젝트에 추가하고 changelog 파일을 작성하여 스키마 변경 내용을 관리해보세요.

참고 자료