개요
Liquibase는 자바 애플리케이션에서 데이터베이스 스키마와 버전 관리를 쉽게 할 수 있게 도와주는 도구입니다. 이를 통해 애플리케이션 개발과 배포 과정에서 데이터베이스 접근을 더욱 효율적으로 관리할 수 있습니다.
이 문서에서는 Liquibase를 사용하여 자바 애플리케이션에서 데이터베이스 접근을 제어하는 방법에 대해 소개하고 실제 예제 코드를 제공합니다.
Liquibase 설정
- Maven 또는 Gradle 프로젝트에 Liquibase 종속성을 추가합니다.
- Maven:
<dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.3.5</version> </dependency>
- Gradle:
implementation 'org.liquibase:liquibase-core:4.3.5'
-
Liquibase 설정 파일인
liquibase.properties
또는liquibase.yml
을 작성합니다. 여기에는 데이터베이스 연결 정보와 변경 로그 파일의 위치 등을 설정합니다. - 변경 로그 파일을 작성합니다. 변경 로그 파일은 데이터베이스 스키마 변경을 정의하는 스크립트로서, SQL 또는 XML 형식으로 작성할 수 있습니다.
예제
다음은 Liquibase를 사용하여 데이터베이스 스키마를 초기화하고 업데이트하는 예제입니다.
-
liquibase.properties
파일을 작성하고 다음과 같이 데이터베이스 연결 정보를 설정합니다.changeLogFile=db/changelog/db.changelog-master.xml url=jdbc:mysql://localhost:3306/mydatabase username=root password=secret
-
db/changelog/db.changelog-master.xml
파일을 작성하고 다음과 같이 변경 로그를 정의합니다.<?xml version="1.0" encoding="UTF-8"?> <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="john"> <createTable tableName="users"> <column name="id" type="INT"> <constraints primaryKey="true" nullable="false"/> </column> <column name="name" type="VARCHAR(50)"> <constraints nullable="false"/> </column> <column name="email" type="VARCHAR(100)"> <constraints nullable="false"/> </column> </createTable> </changeSet> </databaseChangeLog>
-
애플리케이션에서 Liquibase를 사용하여 데이터베이스 스키마를 초기화하고 업데이트하는 코드를 작성합니다.
import liquibase.Liquibase; import liquibase.database.Database; import liquibase.database.DatabaseFactory; import liquibase.database.jvm.JdbcConnection; import liquibase.exception.LiquibaseException; import liquibase.resource.FileSystemResourceAccessor; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseSetup { public static void main(String[] args) { try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "secret")) { Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection)); Liquibase liquibase = new Liquibase("db/changelog/db.changelog-master.xml", new FileSystemResourceAccessor(), database); liquibase.update(""); } catch (SQLException | LiquibaseException e) { e.printStackTrace(); } } }
위의 예제는 Liquibase를 사용하여 users
테이블을 생성하는 변경 로그 파일을 적용합니다. 애플리케이션 실행 시 users
테이블이 없다면 생성하고, 이미 존재한다면 변경 사항을 업데이트합니다.
결론
Liquibase는 자바 애플리케이션에서 데이터베이스 접근을 제어하고 관리하는 데 유용한 도구입니다. 이 문서에서는 Liquibase 설정 방법과 간단한 예제를 제공하였습니다.
Liquibase의 자세한 내용과 다양한 기능에 대해서는 Liquibase 공식 문서를 참고하시기 바랍니다.