본문 바로가기
Framework || Library/Spring

Spring에서 JPA 사용하기(환경 설정부터 기본 CRUD 까지)

by 시니성 2023. 8. 18.

이번 글에서는 Spring Data JPAKotlin을 활용하여 간단한 CRUD 작업을 어떻게 수행하는지 함께 알아보겠습니다.
JPA는 자바 플랫폼에서 RDBMS를 객체 지향적으로 쉽게 다룰 수 있게 도와주는 ORM입니다.
그리고 Spring Data JPA는 이를 더욱 쉽게 사용할 수 있게 도와줍니다.

 

🛠 환경 설정

기본적인 환경은 Spring, Gradle, Kotlin 입니다.

먼저, 프로젝트의 build.gradle.kts 파일에 필요한 의존성을 추가해줍니다:

plugins {
    // ... 기타 플러그인들
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    runtimeOnly("mysql:mysql-connector-java")
    // ... 기타 의존성들
}

📝 엔티티 및 리포지토리 생성

User Entity:

이제 우리의 User 엔티티를 정의해봅시다.

import javax.persistence.*

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

User Repository:

Spring Data JPA Repository를 작성해보겠습니다.

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

interface UserRepository : JpaRepository<User, Long>

🚀 CRUD 로직과 예상 SQL

이제 기본적인 CRUD 로직을 UserService 안에서 구현해봅시다.

import org.springframework.stereotype.Service

@Service
class UserService(private val userRepository: UserRepository) {

    // 데이터 생성
    fun createUser(user: User): User {
        return userRepository.save(user)
        // 예상 SQL: INSERT INTO user (name, email) VALUES (?, ?);
    }

    // 데이터 조회
    fun getUserById(id: Long): User? {
        return userRepository.findById(id).orElse(null)
        // 예상 SQL: SELECT * FROM user WHERE id = ?;
    }

    // 데이터 수정
    fun updateUser(id: Long, user: User): User {
        val existingUser = getUserById(id) ?: throw Exception("User not found")
        val updatedUser = existingUser.copy(name = user.name, email = user.email)
        return userRepository.save(updatedUser)
        // 예상 SQL: UPDATE user SET name = ?, email = ? WHERE id = ?;
    }

    // 데이터 삭제
    fun deleteUser(id: Long) {
        userRepository.deleteById(id)
        // 예상 SQL: DELETE FROM user WHERE id = ?;
    }
}

참고: 위 예제에서 사용된 SQL은 추상화된 형태입니다. 실제 실행되는 쿼리와는 차이가 있을 수 있습니다.

마치며

이렇게 Spring Data JPA와 Kotlin을 활용하면 데이터베이스와의 상호작용을 굉장히 간결하게 처리할 수 있습니다.
각각의 로직에 따른 예상되는 SQL도 함께 살펴보면서 직관적으로 어떤 동작이 이루어지는지 알 수 있습니다.
다음 글에서는 트랜잭션 관리나 예외 처리 등의 좀 더 심화된 주제에 대해 다루겠습니다.

이제 간단한 CRUD 작업은 손쉽게 할 수 있게 되었습니다💻🚀

728x90

'Framework || Library > Spring' 카테고리의 다른 글

Spring Batch  (0) 2023.09.05
Spring Application 프로파일  (0) 2023.09.05
Spring에서 JPA사용하기 (Transaction, 예외 처리)  (0) 2023.08.18
Lombok이란? (예시 코드 포함)  (0) 2023.08.17
Windows에 Gradle 설치  (0) 2023.08.17