다대일 [N:1]
일대다 [1:N]
일대일 [1:1]
다대다 [N:N]
단방향과 양방향
Table의 경우 외래키 하나로 양쪽 조인이 가능하다. 즉, 방향이라는 개념이 없다.
하지만 객체의 경우 참조용 필드가 있는쪽으로만 참조 가능하다 (이때 한쪽만 참조하면 단방향이다)
다대일 [N:1]
DB기준 외래키가 있는 table이 "다" 이다.
일대다 [1:N]
다대일을 뒤집은 모양으로 다대일과 마찬가지로 "다"에 외래키가 있다.
주의사항 : "일" 의 객체에 변경점이 있을때 "다"의 외래키가 변경된다.
JoinColumn이 "일"에 있음 (OneToMany)
ex) team을 건드렸는데 member table에 업데이트 쿼리가 발생한다.
즉 객체와 table의 차이로 인해 문제(?)가 발생한다 -> 다대일을 사용하자
일대일 [1:1]
예시) Member와 Locker의 관계. 즉, 회원은 락커를 하나씩만 가질수 있다.
이때 외래키를 Member와 Locker 아무곳이나 넣어도 된다.
하지만 Member table을 많이 사용한다고 하면 Member table에 외래키가 있는것이 유리하다.
다대일과 매우 유사하다 -> 외래키가 있는쪽이 연관관계의 주인이다, 반대편은 mappedBy를 적어준다.
다대다 [N:N]
사용하는것을 추천하지 않는다.
일대대 & 다대일 분리를하고 중간에 연결 table을 만들어서 연관관계를 사용한다.
'Java , Spring > Jpa' 카테고리의 다른 글
[JPA] JPA란? ( ORM, Hibernate, Spring Data JPA) (0) | 2024.01.11 |
---|---|
[JPA] 상속관계 매핑 (0) | 2023.11.01 |
[JPA] 엔티티 매핑 (0) | 2023.10.06 |
[JPA] 영속성 관리 - 영속성 컨텍스트 (0) | 2023.10.03 |
[JPA] JPA 시작하기 (0) | 2023.10.03 |
댓글