Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- frontend
- appleM1
- intellij
- VUE
- 이클립스
- MySQL시작하기
- SQL
- CloutNative
- 우분투에war배포
- K8S
- offset
- pagination
- NullPointerException
- Seek_Keyset
- restful api
- MySQL
- windows10
- springMVC
- SpringBoot
- wappalyzer
- Lombok
- String
- MYSQL에러
- Java
- DB생성
- 스프링에러
- minikube
- Postman
- gradle
- spring
Archives
- Today
- Total
미운 오리 새끼의 우아한 개발자되기
[JPA] 다양한 연관관계 매핑 (2) 일대다 본문
일대다 관계는 다대일 관계의 반대방향이다.
1.1. 일대다 단방향 [1:N]
하나의 팀(1)은 여러 회원(N) 을 참조할 수 있음 -> 일대다
그리고 팀은 회원을 참조하지만, 회원은 팀을 참조하지 않음 -> 단방향
근데 일대다 단방향이 특이한 점이, DB 테이블에서 FK 는 항상! 다 쪽에서 관리를 한다. 근데 이 경우는 단방향이기 때문에 다 쪽인 Member에서는 FK 를 관리할 필드가 없다. 그래서 일 쪽에서 다 쪽의 FK 를 관리해야하는 특이한 모습이 나타난다.
@Entity
public class Team {
@Id @GeneratedValue
@Column(name = "TEAM_ID")
private Long id;
private String name;
@OneToMany
@JoinColumn(name = "TEAM_ID") // MEMBER 테이블의 TEAM_ID (FK)
private List<Member> members = new ArrayList<Member>();
// Getter, Setter...
}
@Entity
public class Member {
@Id @GeneratedValue
@Column(name = "MEMBER_ID")
private String id;
private String username;
// Getter, Setter...
}
일대다 단방향에서 관계를 매핑할 때는 @JoinColumn 을 명시해야 함. 그렇지 않으면 조인테이블 전략을 기본으로 사용한다.
일대다 단방향의 단점
- 위에서 말한 특이점이 일대다 단방향의 단점이 된다. 다른 테이블에 연관관계가 있기 때문에 연관관계 처리를 위해 UPDATE SQL 이 추가적으로 발생한다. -> 일대다 단방향 보다는 다대일 양방향 매핑을 사용하자
1.2. 일대다 양방향 [1:N, N:1]
일대다 양방향은 존재하지 않는다. 다대일 양방향 매핑을 사용하자.
Reference : 자바 ORM 표준 JPA 프로그래밍 (김영한 저)
'Spring & Spring Boot > Spring' 카테고리의 다른 글
[JPA] 고급 매핑 (1) 상속 관계 매핑 (0) | 2023.04.17 |
---|---|
[JPA] 다양한 연관관계 매핑 (3) 일대일 (0) | 2023.04.11 |
[JPA] 다양한 연관관계 매핑 (1) 다대일 (0) | 2023.04.11 |
[JPA] 연관관계 매핑 기초 (2) 양방향 연관관계 (0) | 2023.04.09 |
[JPA] 연관관계 매핑 기초 (1) 단방향 연관관계 (0) | 2023.04.09 |