본문 바로가기

2024-겨울 프로젝트 관련 공부

[Spring Boot / Kotlin] 튜토리얼4, Spring Data CrudRepository 활용하기

해당 튜토리얼에서는 앞서 만들었던 서비스의 db를 CrudRepository를 이용하는 것으로 수정하는 과정이다. CrudRepository는 일반적으로 레파지토리에서 상속하는 인ㄴ터페이스 중 하나이다. 메서드를 정의하지 않아도 간단한 CRUD 사용이 가능하다는 장점이 있다. 자세한 설명은 아래 링크 참조.

https://velog.io/@baekgom/JpaRepository-%EC%99%80-Repository

 

CrudRepository, JpaRepository, Repository

CrudRepository, JpaRepository, Repository

velog.io

 

우선 Message 클래스에 몇가지 어노테이션을 추가해준다. 또한 id 파라미터는 디폴트 값으로 null 값을 넣어줘서 선언 시에 id 파라미터 부분이 비어있어도 null 값으로 대체될 수 있도록 해준다. 

// Message.kt
package com.example.demo

import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Table

@Table("MESSAGES")
data class Message(val text: String, @Id val id: String? = null)

 

다음으로 CrudRepository 인터페이스를 상속하는 MessageRepository 인터페이스를 만들어준다. 

// MessageRepository.kt
package com.exmaple.demo

import org.springframework.data.repository.CrudRepository

interface MessageRepository : CrudRepository<Message, String>

 

마지막으로 CrudRepository의 내장 메서드들로 이미 구현했던 기능들을 더 간단하게 수정할 수 있게 된다.

// MessageService.kt
package com.example.demo

import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service

@Service
class MessageService(private val db: MessageRepository) {
    fun findMessages(): List<Message> = db.findAll().toList()

    fun findMessageById(id: String): Message? = db.findByIdOrNull(id)

    fun save(message: Message): Message = db.save(message)
}

 

728x90