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

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

이승혁님의 프로필 이미지
이승혁

작성한 질문수

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

프로필 수정 처리

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

작성

·

23

0

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

답변 1

0

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

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

  1. merge 사용:

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

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

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

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

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

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

이승혁님의 프로필 이미지
이승혁

작성한 질문수

질문하기