해결된 질문
작성
·
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].