이번 글에서는 Spring Data JPA
와 Kotlin
을 활용하여 간단한 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 |