You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
public void modifyNickname(final Long memberId, final String nickname) {
final Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new EntityNotFound(ErrorCode.MEMBER_NOT_FOUND));
member.changeNickname(nickname);
}
JPA의 변경 감지를 활용한다. 메서드가 끝난 후에 update 쿼리를 날리기 위해서 메서드에@Transactional을 붙여준다.
@Transactional
public void modifyNickname(final Long memberId, final String nickname) {
final Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new EntityNotFound(ErrorCode.MEMBER_NOT_FOUND));
member.changeNickname(nickname);
}
2. save() 사용
위의 메서드는 여러 update가 수행되지도 않고 하나의 update만 일어나기 때문에 트랜잭션의 범위를 최소화하기 위해서 save() 메서드를 호출한다. save() 메서드 내부에는 @Transactional이 붙어있다.
public void modifyNickname(final Long memberId, final String nickname) {
final Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new EntityNotFound(ErrorCode.MEMBER_NOT_FOUND));
member.changeNickname(nickname);
memberRepository.save(member)
}
The text was updated successfully, but these errors were encountered:
단건 업데이트를 할 경우 @transactional과 save() 둘 중 어느 것을 사용해야 할까?
1. @transactional 사용
JPA의 변경 감지를 활용한다. 메서드가 끝난 후에 update 쿼리를 날리기 위해서 메서드에
@Transactional
을 붙여준다.2. save() 사용
위의 메서드는 여러 update가 수행되지도 않고 하나의 update만 일어나기 때문에 트랜잭션의 범위를 최소화하기 위해서
save()
메서드를 호출한다.save()
메서드 내부에는@Transactional
이 붙어있다.The text was updated successfully, but these errors were encountered: