강의

멘토링

커뮤니티

Inflearn Community Q&A

tlduf26134052's profile image
tlduf26134052

asked

Real-world! Spring Boot and JPA Utilization 1 - Web Application Development

Change Detection and Merge

변경감지에 대해 질문 있습니다.

Resolved

Written on

·

322

1

jpa를 이용해 게시판을 만들고 있는 중 입니다.

저는 repository 계층을 인터페이스에 JpaRepository를 상속해서 사용하고 있는데 수정 작업 시

영속이나 준영속 신경 안 쓰고 무조건 save로 데이터를 처리하는건 좋지않은 방법인가요?

javaJPA웹앱springspring-boot

Answer 2

3

yh님의 프로필 이미지
yh
Instructor

안녕하세요. 이시열님

JPA에서 데이터 변경은 변경 감지를 통해서 하는 것이 맞습니다.

예를 들어서 다음 로직을 보시면, 왜 변경감지를 통해서 문제를 해결해야 하는지 이해가 되실꺼에요.

@Transactional

public void logic(Long id, String username, boolean updateFlag) {

  Member member = em.find(Member.class, id);

  member.setUsername(username);

  if(updateFlag) {

    repository.save(member);

  }

}

이렇게 되어 있을 때 이 메서드를 외부에서 다음과 같이 호출하면 어떻게 될까요?

logic(1, "change", true); //업데이트 되기를 기대

logic(1, "change", false); //업데이트 되지 않기를 기대

결과는 둘다 업데이트가 되어 버립니다. save 호출 여부와 무관하게 변경 감지가 동작하기 때문입니다.

정리하면 JPA를 사용하면 특별한 경우를 제외하고는 변경감지를 기준으로 개발해야 합니다.

감사합니다.

1

tlduf26134052님의 프로필 이미지
tlduf26134052
Questioner

예시를 보니까 쉽게 이해가 됐습니다.

본업도 바쁘실텐데 이렇게 예제까지 적으며 설명해 주셔서 정말 감사드립니다. ^^

tlduf26134052's profile image
tlduf26134052

asked

Ask a question