인프런 커뮤니티 질문&답변

유근일님의 프로필 이미지

작성한 질문수

실전! 스프링 데이터 JPA

새로운 엔티티를 구별하는 방법

jpa merge 관련 문의 드립니다.

작성

·

410

1

안녕하세요. 항상 좋은 강의 감사드립니다.

새로운 엔터티를 구별하는 방법에서 궁금한 부분이 있어 질문 드립니다.

일반적으로 수정을 위해 findById를 통해 Entity 객체를 영속화 시킨 후 필요한 칼럼을 변경처리 하고 있습니다.

이러면 변경감지를 통해 트랜잭션 종료 구간에서 자동 update 쿼리가 발생이 되는데요...

만약 이 상태에서 repository.save(entity)를 수행하게 되면 혹시 문제가 발생할 만한 포인트가 있는지 궁금합니다.

내부 로직을 보면 아마도 save()에서 SPring Data JPA가 merge를 수행할것 같은데요...

보통 준영속성 상태 객체를 merge하는건 좋은 방법이 아닌것 같지만 이 처럼 findById를 통해 영속화 되어 있는 객체를 merge 하게 되면 혹시나 별도 주의사항이 있지는 않는지 문의 드립니다.

감사드립니다.

답변 2

1

삭제된 글입니다

김영한님의 프로필 이미지
김영한
지식공유자

네^^;;

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 근일님^^

영속 상태의 엔티티를 merge하게 되면 무시합니다.

trace 레벨로 로그를 찍어보시면

Ignoring persistent instance 라는 메시지를 확인할 수 있습니다.

merge cascade가 설정되어 있는 경우에는 merge cascade가 발생할 수 있습니다.

그런데 어떤 이유 때문에 이렇게 사용하고 싶으신건지요?

감사합니다.

유근일님의 프로필 이미지
유근일
질문자

답변 감사합니다. 제가 사용하는 코드는 아니고요... 코드 인스펙션을 하면 이런 형식의 코드가 많이 나와서 혹시 문제가 있지는 않을까 문의드렸던 부분입니다. 그럼 딱히 문제는 없는걸로 이해해도 될까요??

김영한님의 프로필 이미지
김영한
지식공유자

이 부분은 잘못 사용된 것이기 때문에 제거하는 것이 맞습니다.

그래도 혹시 모르니 이 코드를 작성하신 담당자분께 어떤 의도로 이렇게 작성했는지 문의하는게 좋을 듯 합니다.

감사합니다.