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

최성규님의 프로필 이미지
최성규

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 클래스 개발1

JPA의 양방향 연관관계 이해

해결된 질문

작성

·

180

0

안녕하세요. 1~2년 정도 지난 강의 같지만(최신 강의를 제가 먼저 들었던 터라.. 이번 것에는 영한님의 목소리 톤도 2020년 녹음에 비해 더 긴장되어 있음^^), 매우 유익하게 잘 배우고 있습니다. 특히 현 강의인 설계 부분은 제 관심 부분이기도 합니다.

참고로 저는 기본편 강의를 아직 듣지 않았습니다. JPA의 양방향 연관관계 개념 이해를 다음과 같이 서술해 보았는데 전체적인 맥락보다는 세부 이해에서 오류가 있다면 '감수'를 해 주시면 감사하겠습니다. 강의 진도에 급하게 필요한 것은 아니니 여유 있을 때 천천히 검토해 주십시오.~  (참조를 위해 문장마다 번호 붙였습니다)

-------------

관계형 DB에서는 한 테이블에 FK 잡으면 테이블(entity)간 연관관계를 정의하는 것은 그걸로 끝이다[1]. DBMS가 FK에 따른 제약조건을 관리해 준다[2]. JPA에서의 '양방향 연관관계'니 단방향이니 하는 것을 인간이 따지지는 않는 것 같다[3]. 

JPA에서는 양방향 연관관계라는 게 있고 이를 구현키 위해 양쪽 entities에서 각각 서로 상대방을 참조한다[4]. 그 양쪽의 참조변수 중 어느 하나에 우선순위를 두고 그것만 수정하는 식으로 관리된다[5]. JPA가 자동 관리에 개입하여 다른 쪽의 참조변수를 필요시 자동 갱신하며 인간(이 짠 코드)은 readonly로 접근한다[6].

다시 말해, DB 테이블에서는 FK를 가진 측에서 FK만 변경하면 참조관계가 정리되는데, JPA는 구조상 '양방향 연관관계'라는 것을 정의할 수 밖에 없었던 것이고(정말?)[7], 그 구조 속에서 참조변수 갱신의 혼동을 막기 위해 주도권을 어느 한 쪽에 부여하는 방식을 채용한다[8].

답변 2

1

최성규님의 프로필 이미지
최성규
질문자

이후에 들을 기본편 강의를 기대하겠습니다. 현재 강의 진도를 빨랑 빼야겠네요. 

답변 감사합니다.

1

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

안녕하세요. 성규님^^

기본편 강의에서 정말 자세하게 설명합니다! JPA의 양방향 연관관계를 제대로 이해하는 것은 처음 프로그래밍 언어 배우는 사람이 C언어로 따지면 포인터를 이해하는 것 처럼 어렵기 때문에 기본편 강의를 통해서 딱! 정리해야 합니다! 지금은 아~ 이런게 있구나 정도만 생각해주세요^^!

최성규님의 프로필 이미지
최성규

작성한 질문수

질문하기