연관관계 메소드 질문
232
작성한 질문수 9
안녕하세요 강사님.
기본강의에서도 연관관계 메소드를 공부하여 알고 있었습니다.
양방향 연관관계에서 주인이 되는 쪽을 수정하면 주인이 아닌쪽에서도 자동으로 수정이 되지만 객체의 개념으로 접근하기 위해 양쪽을 모두 수정해주는 연관관계 메소드가 필요한것인가요?
주인이 되는 쪽만 잘 수정해주면 사실상 연관관계 메소드가 필요 없는 것이지요?
그렇다면 changeTeam 연관관계 메소드를 이용해서 팀을 바꾸었을때 바뀐 팀의 멤버를 추가하는 것이 맞다면 반대로 바뀌기 전의 팀에서도 멤버를 제거해야되는것이 아닌가요?
예를 들어서
팀1 -> 멤버1
팀2 -> 멤버2
에서 멤버1을 팀2로 옮길시 연관관계 메소드는 add만 해주시기때문에
팀1 -> 멤버1
팀2 -> 멤버2, 멤버1
로 되어 제거를 해주어야 한다고 생각합니다.
하지만 테스트 결과 주인이 되는 쪽을 수정하니 자동으로 멤버1이 제거가 되더군요. 이 또한 객체의 개념을 살리기 위해 제거가 자동으로 되지만 제거가 되는 remove()를 추가해줘야 할까요?
답변 1
3
안녕하세요. 빈센트님 좋은 질문입니다.
Q: 양방향 연관관계에서 주인이 되는 쪽을 수정하면 주인이 아닌쪽에서도 자동으로 수정이 되지만 객체의 개념으로 접근하기 위해 양쪽을 모두 수정해주는 연관관계 메소드가 필요한것인가요? 주인이 되는 쪽만 잘 수정해주면 사실상 연관관계 메소드가 필요 없는 것이지요?
-> 연관관계의 주인만 수정해주면 JPA가 DB의 FK를 업데이트 하기 때문에, JPA를 사용할 때는 연관관계들이 잘 정리됩니다. 그런데 문제는 순수한 객체 상태에서 이것들을 사용할 때 문제가 발생합니다. 예를 들어서 JPA를 사용하지 않고, 순수한 객체 상태에서 테스트 코드를 작성할 때 문제가 발생할 수 있습니다.
따라서 예시를 들어주신 것 처럼 remove()도 추가해주는 것이 맞습니다.
그런데 이런 부분들이 막상 해보면 remove()도 해야하고, 너무 복잡해지기 때문에, 크게 문제가 되지 않으면 연관관계의 주인만 잘 관리하고, 양쪽으로 연결해주는 것 정도만으로 타협하는 것도 좋은 선택지 입니다.
감사합니다.
SpringBoot 4.X에서의 Querydsl 설정
0
79
2
querydsl 오픈소스에 대한 질문
0
69
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
108
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
314
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
68
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
159
1
querydsl sum() 메서드 없어요.
0
157
2
build 디렉터리 생성
0
135
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
113
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
90
1
오타 제보 드립니다.
0
70
2
벌크 연산과 flush, clear
0
76
1
Run As Intellij 로 변경시 Q타입 import 불가
0
87
1
QHello import하기 문제 발생
0
147
2
등록된 함수 보는법(H2Dialect) 질문
0
68
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
195
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
200
1
querydsl 설정 문제
0
222
2
quey dsl 설정부분
0
157
2
count 쿼리 관련 질문입니다!
0
75
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
89
1
답변부탁드리겠습니다.
0
89
2
(OrderSpecifier)관련 내용 어디있을가요
0
64
1
중급문법 벌크연산에서
0
81
2





