728x90
일대다 단방향

- Team을 중심으로 연관관계를 설정한다
- Team의 members를 변경해 주었을 때 다른 테이블에 있는 Member의 Team_ID가 변경이 된다(좋지 않다)

- Member에는 Team을 참조하는 변수가 없고 Team에만 Member를 참조하는 변수가 있다
Test

- 실행을 하게 되면, 쿼리 3번 실행
- insert member
- insert team
- update member
- member와 Team의 Insert 후 연관관계를 Update쿼리를 동작시켜 넣어준다(성능상 더 안 좋다)
- 내 테이블에 외래키가 없기 때문에 member테이블에 update를 해주어야 하고, 관리하기도 힘들어진다.
- 일대다 단방향을 사용하지 말고 차라리 다대일 양방향을 사용하자
- 일대다 단방향은 일대다(1:N)에서 일(1)이 연관관계의 주인
- 테이블 일대다 관계는 항상 다(N) 쪽에 외래 키가 있음
- 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하는 특이한 구조
- @JoinColumn을 꼭 사용해야 함. 그렇지 않으면 조인 테이블 방식을 사용함(중간에 테이블을 하나 추가함)

- 중간에 테이블이 생기므로 운영하기가 힘들어진다.
일대다 단점
- 엔티티가 관리하는 외래 키가 다른 테이블에 있음
- 연관관계 관리를 위해 추가로 UPDATE SQL 실행
- 일대다 단방향 매핑보다는 다대일 양방향 매핑을 사용하자
일대다 양방향


- insertable = false, updateable = false를 설정해 insert와 update를 안 하는 읽기 전용으로 만든다.
- 결국 다대일 양방향과 차이가 없다.
- 이런 매핑은 공식적으로 존재 X
- @JoinColumn(insertable=false, updatable=false)
- 읽기 전용 필드를 사용해서 양방향처럼 사용하는 방법
- 다대일 양방향을 사용하자
728x90
'자바 ORM 표준 JPA 프로그래밍(인프런)' 카테고리의 다른 글
| Ch06. 다양한 연관관계 매핑 - 다대다 [N:M] (0) | 2021.12.13 |
|---|---|
| Ch06. 다양한 연관관계 매핑 - 일대일 [1:1] (0) | 2021.12.13 |
| Ch06. 다양한 연관관계 매핑 - 다대일 [N:1] (0) | 2021.12.13 |
| Ch05. 연관관계 매핑 기초 - 실전 예제(연관관계 매핑 시작) (0) | 2021.12.12 |
| Ch05. 연관관계 매핑 기초 - 양방향 연관관계와 연관관계의 주인(주의점) (0) | 2021.12.12 |