이번 포스트에서는 MyBatis를 사용하여 데이터베이스 마이그레이션을 수행하는 방법에 대해 알아보겠습니다.
마이그레이션이란?
마이그레이션은 데이터베이스 스키마를 새로운 버전으로 업데이트하는 과정을 말합니다. 이를 통해 새로운 테이블, 컬럼, 인덱스 등을 추가하거나 기존 스키마를 변경할 수 있습니다. MyBatis는 데이터베이스 마이그레이션을 손쉽게 수행할 수 있는 많은 도구를 제공합니다.
MyBatis 마이그레이션 도구
MyBatis 마이그레이션을 위해 주로 사용되는 도구는 다음과 같습니다:
-
Flyway: Flyway는 파일 기반 마이그레이션 도구로, SQL 스크립트 파일을 사용하여 데이터베이스 스키마를 관리합니다. MyBatis에서 Flyway를 사용하려면 Maven이나 Gradle 등의 빌드 도구를 통해 Flyway를 의존성으로 추가해야 합니다.
-
Liquibase: Liquibase는 XML이나 YAML 등의 형식으로 데이터베이스 스키마를 정의하고 버전 관리를 할 수 있는 마이그레이션 도구입니다. MyBatis에서는 Liquibase를 사용하기 위해 마이그레이션을 수행할 때 Liquibase 스크립트를 실행하도록 설정해야 합니다.
MyBatis 마이그레이션 예제
아래는 MyBatis와 Flyway를 이용한 데이터베이스 마이그레이션 예제입니다.
- MyBatis와 Flyway 의존성 추가
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.x.x</version>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>6.x.x</version>
</dependency>
- Flyway 설정 파일 작성
Flyway를 사용하기 위해 flyway.properties
파일을 프로젝트의 리소스 폴더에 생성합니다. 아래는 예시입니다:
flyway.url=jdbc:mysql://localhost:3306/mydatabase
flyway.user=root
flyway.password=secret
- 마이그레이션 스크립트 작성
src/main/resources/db/migration
폴더에 마이그레이션 스크립트(V1__create_users_table.sql
)를 작성합니다:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
- MyBatis 마이그레이션 설정
MyBatis 설정 파일(mybatis-config.xml
)에서 Flyway를 마이그레이션 수행 전에 실행하도록 설정합니다:
<bean id="flyway" class="org.flywaydb.core.Flyway">
<property name="dataSource" ref="dataSource"/>
<property name="locations" value="classpath:db/migration"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
- 마이그레이션 수행
애플리케이션을 실행하거나 빌드할 때 Flyway가 마이그레이션 스크립트를 실행합니다. 데이터베이스가 최신 상태로 마이그레이션된 후에는 MyBatis를 사용하여 데이터베이스에 접근할 수 있습니다.
마무리
이번 포스트에서는 MyBatis와 Flyway를 사용하여 데이터베이스 마이그레이션을 수행하는 방법에 대해 알아보았습니다. MyBatis를 사용하면 데이터베이스 스키마를 쉽게 관리하고 업데이트할 수 있습니다. Flyway와 같은 도구를 활용하여 마이그레이션 프로세스를 자동화하면 애플리케이션의 유지보수와 배포를 더욱 효율적으로 수행할 수 있습니다.