JPA의 양방향 연관관계 이해
안녕하세요. 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
안녕하세요. 성규님^^
기본편 강의에서 정말 자세하게 설명합니다! JPA의 양방향 연관관계를 제대로 이해하는 것은 처음 프로그래밍 언어 배우는 사람이 C언어로 따지면 포인터를 이해하는 것 처럼 어렵기 때문에 기본편 강의를 통해서 딱! 정리해야 합니다! 지금은 아~ 이런게 있구나 정도만 생각해주세요^^!
sdk 설정 오류
0
47
2
오탈자 - @Transactional
0
53
1
src/test/resources 테스트 경로 문제
0
49
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
62
1
MemberRepositoryTest 실행오류
0
77
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
137
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
50
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
59
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
100
1
멤버서비스테스트 부분에서 막힙니다.
0
163
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
115
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
117
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
110
1
24분 27초 연관관계 편의 메서드 위치
0
112
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
107
2
빌드 툴, Gradle
0
57
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
73
2
Repository에서 EntityManager 주입 방식 차이
0
87
1
롬복과 사용자 정의 setter 메서드
0
70
1
주문 목록 조회 fetch join 질문드립니다
0
80
1
dirty checking 질문드립니다.
0
80
1
동시성 관련 질문입니다
0
72
1





