더티체킹을 이용한 댓글 업데이트

박미소·2024년 1월 25일
0

코틀린

목록 보기
34/44

CommentRequest.kt

data class CommentRequest(
    val memberId: Long,
    val content: String
)

Comment.kt

@Column(name = "content")
var content: String = _content
    private set
        ...
   
fun update(newContent: String){
     content = newContent
    }

CommentService.kt

@Transactional
fun updateComment(postId: Long, commentId: Long, request: CommentRequest): CommentResponse{
    // TODO: 댓글을 작성한 사용자만 댓글 수정 가능해야 함
    val comment = getByIdOrNull(commentId)

    comment.update(request.content)

    return comment.toResponse()
    }

request에서 변경한 newContentcontent에 넣어주기만 해도 1차캐시(newContent)와 스냅샷(최초의 content)이 달라져서 flush() 되는 과정중에 업데이트 쿼리가 생성된다.

update 메서드 안에 있는 content는 엔티티 컬럼의 content이다(@field:Column(name = "content") public final var content: String)

0개의 댓글