Akashic Records

JPA 연동하기 본문

Kotlin for Beginners

JPA 연동하기

Andrew's Akashic Records 2023. 6. 2. 11:19
728x90

Java Persistence API (JPA)는 Java에서 데이터베이스를 다루기 위한 인터페이스를 제공합니다. Spring Boot와 함께 사용되며, JPA의 구현체로는 Hibernate, EclipseLink 등이 있습니다. 이 예제에서는 Spring Boot와 Hibernate를 사용하여 간단한 데이터베이스 작업을 수행하는 방법을 보여드립니다.

 

먼저, 필요한 의존성을 추가합니다. Gradle을 사용하는 경우, build.gradle.kts 파일에 다음 항목을 추가해야 합니다.

implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("com.h2database:h2")

 

다음으로, 엔티티 클래스를 정의합니다. @Entity 어노테이션이 붙은 클래스는 JPA가 관리하는 테이블의 한 행을 나타냅니다. 아래는 User라는 이름의 엔티티를 정의하는 예시입니다.

import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.GenerationType
import javax.persistence.Id

@Entity
data class User(
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long? = null,
var name: String,
var email: String
)

 

그 다음, User 엔티티에 대한 Repository를 정의합니다. JpaRepository 인터페이스를 상속받는 인터페이스를 생성하면, Spring Data JPA가 자동으로 구현체를 생성해줍니다.

import org.springframework.data.jpa.repository.JpaRepository

interface UserRepository : JpaRepository<User, Long> {
fun findByName(name: String): List<User>
}

 

마지막으로, UserRepository를 사용하여 데이터베이스에 접근하는 예시입니다.

import org.springframework.boot.CommandLineRunner
import org.springframework.stereotype.Component

@Component
class DatabaseInitializer(private val userRepository: UserRepository) : CommandLineRunner {
override fun run(vararg args: String?) {
    val user = User(name = "John Doe", email = "john.doe@example.com")
    userRepository.save(user)

    val users = userRepository.findByName("John Doe")
    users.forEach { println("Found user: $it") }
}
}

위의 코드는 Spring Boot 애플리케이션 시작 시 DatabaseInitializerrun 메서드를 실행합니다. "John Doe"라는 이름과 이메일 주소를 가진 사용자를 생성하여 저장하고, 그 사용자를 검색하여 출력합니다.

 

이러한 방식으로, JPA와 Spring Data를 사용하면 복잡한 SQL 쿼리 없이도 데이터베이스 작업을 수행할 수 있습니다. 복잡한 쿼리가 필요한 경우에도 Spring Data JPA는 @Query 어노테이션을 이용한 커스텀 쿼리를 지원합니다.

728x90
Comments