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

qwerty0820님의 프로필 이미지
qwerty0820

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

값 타입 컬렉션

AddreesEntity 업데이트 쿼리 관련 질문

작성

·

200

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

강의 내용에서 설명하신 부분과는 조금 거리가 있는 내용인 것 같습니다만... 의문점이 풀리지 않아서 질문을 남겨 봅니다. 1:N 단방향 연관관계에 대한 질문이 더 맞을 것 같습니다.

강의에서 addressEntity 엔티티와의 연관관계를 OneToMany , 연관관계의 주인을 1쪽에 두셨는데, 쿼리를 보면 addressEntity 에 대한 insert 쿼리가 cascade 때문에 같이 날아가는데 이 시점에서 이미 member_id 즉 addressEntity 입장에서 fk 값이 되는 이 값을 이미 알고 있는걸까요 ? 만약 그렇다면 update 코드는 왜 또한번 jpa 에서 날리는 건지 궁금합니다.
연관관계 주인쪽의 값 변동에 따른 jpa의 추적 메커니즘상 쿼리가 한번 더 날아가는 것일까요 ?

답변 2

0

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

안녕하세요. qwerty0820님

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

 

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. qwerty0820님의 질문에 대해 관련된 정보를 찾아보았습니다.

질문에서 언급하신 “1:N 단방향 연관관계에서의 쿼리 동작 방식, 특히 AddressEntity 업데이트 쿼리와 관련된 처리”에 대한 구체적인 설명은 다음과 같습니다.

연관관계 주인과 쿼리 발생 이해

1:N 연관관계에서 OneToMany 측은 연관관계의 주인이 아니며, 이 경우 JPA는 연관관계를 관리하기 위해 추가적인 업데이트 쿼리를 발생시킬 수 있습니다. 연관관계의 주인이 아닌 쪽에서 변경이 일어날 경우, JPA는 이를 데이터베이스에 반영하기 위해 추가적인 업데이트 쿼리를 날릴 수 있는데, 이는 JPA가 연관관계 주인을 통해서만 연관관계 관리 및 추적을 하기 때문입니다.

질문에서 언급하신 “멤버id(member_id) 즉, AddressEntity 입장에서 FK 값이 이미 알려져 있는가?“에 대한 것은, JPA가 엔티티를 관리하는 과정에서 연관관계 주인을 통해 FK 값을 관리하며, insert 쿼리 실행 시점에는 연관된 엔티티의 식별자(PrimaryKey)가 이미 결정되어 있어야 합니다. 다만, 연관관계 매핑 설정 및 cascade 옵션에 따라 실제 쿼리 발생 시점 및 순서에 차이가 생길 수 있습니다.

이와 관련하여, 특정 키를 가지고 엔티티를 업데이트 하려는 방법에 대한 질문과 유사한 상황을 설명하는 기존 질문 링크를 아래에 첨부합니다. 이 답변은 조금 다른 맥락이긴 하나, 엔티티 업데이트 과정과 JPA의 작동 방식을 이해하는 데 도움이 될 수 있습니다.

  • 엔티티로 변경 후 업데이트 질문 드립니다.“에서는 엔티티를 통한 업데이트 방법에 대해 설명하고 있습니다. 특정 조건을 만족하는 엔티티의 값을 업데이트하는 방법에 대한 구체적인 예시를 제공하고 있습니다.

질문자님의 경우, cascade 옵션 사용과 연관관계의 주인 설정에 따른 JPA의 업데이트 쿼리 발생 메커니즘을 이해하는 것이 핵심 포인트입니다. JPA는 연관관계 주인을 통해 엔티티 간의 연관 관계를 관리하며, 이 과정에서 어떻게 FK를 관리하고, 어떤 상황에서 업데이트 쿼리를 발생시키는지에 대한 이해가 필요합니다.

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

qwerty0820님의 프로필 이미지
qwerty0820

작성한 질문수

질문하기