[java] 자바에서 Liquibase와 함께 사용하는 맞춤형 데이터베이스 변경 스크립트 작성 방법

Liquibase는 자바에서 데이터베이스 스키마 관리를 용이하게 해주는 오픈 소스 라이브러리입니다. 이 글에서는 Liquibase를 사용하여 맞춤형 데이터베이스 변경 스크립트를 작성하는 방법에 대해 알아보겠습니다.

1. Liquibase 설정

먼저, 프로젝트에 Liquibase를 설정해야 합니다. Maven 프로젝트의 경우 pom.xml 파일에서 Liquibase 의존성을 추가해야 합니다.

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

또한, Liquibase 설정 파일인 liquibase.properties 파일을 생성해야 합니다. 이 파일은 데이터베이스 연결 정보와 변경 스크립트 위치 등을 설정하는데 사용됩니다.

# 데이터베이스 연결 정보
url=jdbc:mysql://localhost:3306/mydatabase
username=myusername
password=mypassword

# 변경 스크립트 위치
changelogFile=classpath:/db/changelog.xml

2. 변경 스크립트 작성

변경 스크립트는 Liquibase에서 데이터베이스 변경 작업을 수행하는데 사용됩니다. 일반적으로 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.5.xsd">
    
    <!-- 변경 스크립트 작성 -->
    
</databaseChangeLog>

변경 스크립트 작성은 다양한 방법으로 가능합니다. 일반적으로는 SQL 형태로 작성되지만, Liquibase는 다양한 변경 태그를 제공하여 데이터베이스 변경 작업을 명확하게 정의할 수 있도록 도와줍니다.

예를 들어, 새로운 테이블을 생성하고 데이터를 추가하려면 다음과 같은 변경 스크립트를 작성할 수 있습니다:

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

위의 예시에서는 users 테이블을 생성하고, idname 컬럼을 추가한 다음, 사용자 데이터를 추가하는 변경 작업이 수행됩니다.

3. 변경 스크립트 적용

변경 스크립트를 작성한 후에는 Liquibase를 사용하여 데이터베이스에 변경을 적용해야 합니다. 다음은 Maven을 사용하여 변경 스크립트를 적용하는 방법입니다.

mvn liquibase:update

위 명령어를 실행하면 Liquibase가 liquibase.properties 파일에서 지정된 데이터베이스에 대해 변경 스크립트를 실행합니다. 변경 스크립트를 이미 적용한 경우, Liquibase는 변경된 스크립트만 적용하여 업데이트합니다.

4. 참고 자료