Liquibase는 데이터베이스 스키마를 관리하기 위한 오픈 소스 도구입니다. 이를 사용하여 데이터베이스 스키마의 변경 사항을 추적하고 관리할 수 있습니다. 이번 포스트에서는 Liquibase를 사용하여 자바 애플리케이션에서 초기 데이터를 로딩하는 방법을 알아보겠습니다.
1. Liquibase 설정
먼저, 프로젝트에 Liquibase를 추가하고 설정해야 합니다. 프로젝트의 pom.xml
파일에 다음 종속성을 추가하세요:
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>4.3.5</version>
</dependency>
2. ChangeSet 생성
데이터베이스에 초기 데이터를 로딩하기 위해 Liquibase ChangeSet을 생성해야 합니다. src/main/resources/db/changelog
디렉토리에 data.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.3.xsd">
<changeSet id="1" author="you">
<createTable tableName="users">
<column name="id" type="INT">
<constraints primaryKey="true"/>
</column>
<column name="name" type="VARCHAR(255)"/>
<column name="email" type="VARCHAR(255)"/>
</createTable>
</changeSet>
<!-- 추가할 초기 데이터 -->
<changeSet id="2" author="you">
<insert tableName="users">
<column name="id" value="1"/>
<column name="name" value="John Doe"/>
<column name="email" value="john@example.com"/>
</insert>
<insert tableName="users">
<column name="id" value="2"/>
<column name="name" value="Jane Smith"/>
<column name="email" value="jane@example.com"/>
</insert>
</changeSet>
</databaseChangeLog>
위의 예제에서는 users
테이블을 생성하고 두 개의 초기 데이터를 삽입합니다.
3. Liquibase 실행
이제 애플리케이션에서 Liquibase를 실행하여 초기 데이터를 로딩할 차례입니다. App.java
파일을 만들고 다음과 같이 내용을 작성하세요:
import liquibase.Liquibase;
import liquibase.database.DatabaseFactory;
import liquibase.database.Database;
import liquibase.database.DatabaseConnection;
import liquibase.database.DatabaseConnectionConnection;
import liquibase.database.DatabaseFactory;
import liquibase.exception.LiquibaseException;
import liquibase.resource.ClassLoaderResourceAccessor;
public class App {
public static void main(String[] args) {
try {
DatabaseConnection databaseConnection = new DatabaseConnectionConnection(yourDataSource.getConnection());
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(databaseConnection);
Liquibase liquibase = new Liquibase("db/changelog/data.xml", new ClassLoaderResourceAccessor(), database);
liquibase.update("");
} catch (LiquibaseException e) {
e.printStackTrace();
}
}
}
위의 예제에서 yourDataSource
는 데이터베이스 연결을 위한 DataSource 객체입니다. 이를 알맞게 설정하여 사용하세요.
4. 애플리케이션 실행
이제 애플리케이션을 실행하여 Liquibase를 통해 초기 데이터를 로딩해보세요. App.java
를 실행하면 Liquibase가 실행되고 users
테이블이 생성되며, 초기 데이터가 삽입될 것입니다.
이렇게 Liquibase를 사용하여 자바 애플리케이션에서 초기 데이터를 로딩할 수 있습니다. Liquibase를 통해 데이터베이스 스키마를 유지 및 관리하는 것은 애플리케이션의 개발과 유지 보수에 매우 유용합니다.