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에서 변경한 newContent
를 content
에 넣어주기만 해도 1차캐시(newContent)와 스냅샷(최초의 content)이 달라져서 flush() 되는 과정중에 업데이트 쿼리가 생성된다.
update
메서드 안에 있는 content
는 엔티티 컬럼의 content
이다(@field:Column(name = "content") public final var content: String
)