[kotlin] 코틀린에서 Hibernate와의 데이터베이스 연동

코틀린은 자바 플랫폼에서 동작하는 현대적인 정적 언어이며, Hibernate는 객체-관계 매핑(ORM) 프레임워크로써 자바 언어로 개발 및 사용되어왔습니다. 코틀린 언어를 사용하여 Hibernate와 데이터베이스를 연동하는 방법에 대해 알아보겠습니다.

Hibernate 및 데이터베이스 의존성 추가

먼저, Gradle을 사용하는 프로젝트의 경우 build.gradle 파일에 Hibernate 및 데이터베이스 드라이버 의존성을 추가해야 합니다.

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    implementation "org.hibernate:hibernate-core:5.5.7.Final"
    runtimeOnly "com.h2database:h2"
}

위의 예시에서는 H2 데이터베이스를 위해 com.h2database:h2를 사용하였습니다. 적절한 데이터베이스 드라이버를 선택하여 의존성을 추가해주십시오.

Hibernate 설정 파일 작성

다음으로, Hibernate를 설정하기 위한 hibernate.cfg.xml 파일을 작성해야 합니다. 이 파일은 데이터베이스 연결 및 Hibernate 설정을 정의하는 데 사용됩니다.

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.h2.Driver</property>
        <property name="hibernate.connection.url">jdbc:h2:mem:test</property>
        <property name="hibernate.connection.username">sa</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">create-drop</property>
    </session-factory>
</hibernate-configuration>

Entity 클래스 정의

이제 데이터베이스의 테이블과 매핑될 엔티티 클래스를 작성해야 합니다. 코틀린에서는 일반적인 자바 엔티티 클래스와 유사한 형태로 작성할 수 있습니다.

import javax.persistence.Entity
import javax.persistence.Id

@Entity
data class Product(
    @Id
    val id: Long,
    val name: String,
    val price: Double
)

위의 예시에서 @Entity 어노테이션은 해당 클래스가 엔티티임을 나타내고, @Id 어노테이션은 엔티티의 식별자(primary key)를 나타내는 필드임을 나타냅니다.

Hibernate 세션 및 연산 수행

마지막으로, Hibernate 세션을 사용하여 데이터베이스 연산을 수행할 수 있습니다. 아래는 Hibernate를 사용하여 Product 엔티티를 데이터베이스에 저장하는 예시입니다.

fun main() {
    val sessionFactory = Configuration().configure("hibernate.cfg.xml").buildSessionFactory()
    val session = sessionFactory.openSession()
    val product = Product(1, "Example Product", 9.99)

    session.transaction.use {
        session.save(product)
        it.commit()
    }

    session.close()
    sessionFactory.close()
}

위의 코드에서 sessionFactoryhibernate.cfg.xml 파일을 사용하여 만들어지고, session을 통해 데이터베이스 연산이 수행됩니다. 세션을 사용한 이후에는 세션 및 세션 팩토리를 모두 닫아 주어야 합니다.

이제 코틀린에서 Hibernate와 데이터베이스를 연동하는 기본적인 방법을 알아보았습니다. 추가적으로 더욱 복잡한 쿼리, 관계 매핑 및 성능 최적화에 대해 더 알아보려면 Hibernate와 JPA 관련 문서를 참고하시기 바랍니다.

참고 자료

관련 블로그 포스트: 코틀린에서 JPA 및 Hibernate 사용하기