[kotlin] 코틀린에서 데이터베이스 마이그레이션(Migration) 처리 방법

코틀린을 사용하여 데이터베이스를 다룰 때, 스키마(schema)의 변경 또는 업그레이드가 필요한 경우 데이터베이스 마이그레이션을 처리해야 합니다. 이를 효율적으로 처리하기 위해서는 데이터베이스 마이그레이션 도구를 사용하거나 직접 처리하는 방법이 있습니다. 이 글에서는 코틀린에서 데이터베이스 마이그레이션을 처리하는 두 가지 방법에 대해 알아보겠습니다.

1. Flyway나 Liquibase와 같은 데이터베이스 마이그레이션 도구 사용

데이터베이스 마이그레이션을 위한 대표적인 도구로는 FlywayLiquibase가 있습니다. 이러한 도구를 사용하면 마이그레이션 스크립트를 작성하여 간단하게 데이터베이스 스키마의 변경을 관리할 수 있습니다.

아래는 Flyway를 사용하여 데이터베이스 마이그레이션을 처리하는 예제입니다.

import org.flywaydb.core.Flyway

fun main() {
    val flyway = Flyway.configure().dataSource("jdbc:h2:file:./mydb", "sa", null).load()
    flyway.migrate()
}

위 예제에서는 Flyway 인스턴스를 생성하고 데이터베이스의 마이그레이션을 실행하고 있습니다.

2. 직접 데이터베이스 마이그레이션 처리

데이터베이스 마이그레이션 도구를 사용하지 않고 코틀린 코드로 직접 데이터베이스 마이그레이션을 처리할 수도 있습니다. 이 경우에는 JDBC를 사용하여 데이터베이스 연결을 관리하고 마이그레이션 스크립트를 실행해야 합니다.

아래는 코틀린과 JDBC를 사용하여 데이터베이스 마이그레이션을 처리하는 예제입니다.

import java.sql.Connection
import java.sql.DriverManager
import java.sql.Statement

fun main() {
    val url = "jdbc:h2:file:./mydb"
    val conn: Connection = DriverManager.getConnection(url, "sa", null)
    
    val sql = """
        CREATE TABLE IF NOT EXISTS users (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(255) NOT NULL
        );
    """.trimIndent()
    
    val statement: Statement = conn.createStatement()
    statement.execute(sql)
}

위 예제에서는 H2 데이터베이스를 사용하고 있으며, 새로운 테이블을 생성하는 마이그레이션 스크립트를 실행하고 있습니다.

마무리

코틀린에서 데이터베이스 마이그레이션을 처리하는 방법에 대해 알아보았습니다. 데이터베이스 마이그레이션 도구를 사용하거나 직접 코드로 처리하는 방법 중에 프로젝트에 맞는 방식을 선택하여 데이터베이스 스키마 변경을 안전하게 관리할 수 있습니다.

참고문헌: