Liquibase는 자바 애플리케이션에서 데이터베이스 스키마를 관리하기 위한 도구입니다. 이를 사용하면 데이터베이스 스키마를 손쉽게 버전 관리하고, 변경 사항을 적용하고, 롤백할 수 있습니다.
Liquibase 설정하기
먼저, Liquibase를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml
파일에 다음과 같은 의존성을 추가합니다.
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>4.3.5</version>
</dependency>
Gradle을 사용하는 경우, build.gradle
파일에 다음과 같은 의존성을 추가합니다.
implementation 'org.liquibase:liquibase-core:4.3.5'
Liquibase 구성 파일 작성하기
Liquibase를 사용하기 위해선, liquibase.properties
파일을 생성하거나 설정을 프로그래밍적으로 작성해야 합니다.
다음은 liquibase.properties
파일의 예시입니다.
driver: com.mysql.jdbc.Driver
classpath: lib/mysql-connector-java.jar
url: jdbc:mysql://localhost/mydatabase
username: myuser
password: mypassword
또는, Java 코드에서 직접 설정을 작성할 수 있습니다.
Liquibase liquibase = new Liquibase();
liquibase.setChangeLog("path/to/changelog.xml");
liquibase.setDataSource(dataSource);
변경 사항 정의하기
Liquibase는 변경 사항을 XML 또는 YAML 형식의 파일에서 정의합니다. 이를 청크로그 파일(Changelog file)이라고 합니다.
다음은 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.xsd">
<changeSet author="myname" id="1">
<createTable tableName="users">
<column name="id" type="INT">
<constraints primaryKey="true" nullable="false" />
</column>
<column name="name" type="VARCHAR(255)">
<constraints nullable="false" />
</column>
</createTable>
</changeSet>
</databaseChangeLog>
위의 예시에서는 users
테이블을 생성하는 변경 사항을 정의하였습니다.
변경 사항 적용하기
변경 사항을 적용하기 위해서는 Liquibase를 실행해야 합니다.
liquibase.update();
이를 실행하면 changelog.xml
에 정의된 변경 사항이 데이터베이스에 적용됩니다.
변경 사항 롤백하기
이전 버전의 스키마로 롤백하려면 다음을 실행합니다.
liquibase.rollback(tag, context);
tag는 변경 사항의 고유 식별자로, 롤백할 버전을 지정합니다.
결론
Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 스키마를 관리하는 방법에 대해 알아보았습니다. Liquibase를 사용하면 변경 사항을 쉽게 추적하고 데이터베이스 스키마를 효율적으로 관리할 수 있습니다.