인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

이승혁님의 프로필 이미지

작성한 질문수

스프링과 JPA 기반 웹 애플리케이션 개발

프로필 수정 처리

프로필 수정 처리 merge 질문입니다.

작성

·

52

0

강의 잘 듣고있습니다. 현재 service단의 update메서드에는 merge로 병합처리를 하고있지만 accountRepository에서 findById와 같이 수정할 account객체를 찾아내서 영속화를 시켜준뒤에 수정을 하면 dirty checking으로 인한 수정법이 더 안전한 방법일까라고 생각이되서 질문드립니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 이승혁님.

프로필 수정 시, 영속성 관리를 어떻게 할지에 관한 질문을 주셨네요. mergedirty checking 모두 데이터 수정을 위한 방식으로 사용되며 각각 장단점이 있습니다.

  1. merge 사용:

    • merge는 준영속성 상태의 객체를 다시 영속 상태로 변경하는 과정에서 사용됩니다.
    • 이것은 객체를 새롭게 만드는 작업을 포함하여, 성능 상의 오버헤드가 발생할 수 있습니다.
    • 상태가 확실하지 않은 객체를 업데이트할 때 유용합니다.
  2. findById와 dirty checking 사용:

    • findById로 영속 상태의 객체를 반환받아 수정을 진행하면, JPA의 dirty checking이 동작하여 변경사항이 자동으로 검출되고 commit 시점에 DB에 반영됩니다.
    • 이는 기본적으로 JPA가 엔티티 상태를 유지하고 관리하며, 객체 상태와 데이터베이스 간의 일관성을 보장하는 더 효율적인 방법입니다.
    • 변경 사항이 자동으로 반영되기 때문에 직접 저장을 호출할 필요가 없어서 개발자 입장에서는 코드를 더 명확하게 관리할 수 있습니다.

따라서, 이미 식별 가능한 ID가 있는 경우 dirty checking 방식이 더 효율적이고 안전한 방법으로 볼 수 있습니다. JPA의 강력함을 충분히 활용하기 때문입니다.

관련된 질문들은 아래에서 확인하실 수 있습니다:

위 링크들은 프로필 수정 및 영속성에 대한 더 많은 정보와 다른 학습자의 질문 및 답변을 포함하고 있습니다. 이 방법들을 고려하여 상황에 맞게 선택하시는 것을 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.