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 | 29 | 30 |
Tags
- JDBC
- jpa
- QueryDSL
- JPQL
- 인프런
- AOP
- Thymeleaf
- 자바
- 스프링 핵심 기능
- 백준
- transaction
- 그리디
- http
- springdatajpa
- 알고리즘
- Spring Boot
- 김영한
- db
- spring
- pointcut
- Servlet
- 스프링 핵심 원리
- Greedy
- Android
- kotlin
- SpringBoot
- java
- 스프링
- Exception
- Proxy
Archives
- Today
- Total
개발자되기 프로젝트
다대일 매핑[N:1] 본문
1. 연관관계 매핑 시 고려사항 3가지
- 다중성 : 데이터베이스의 다중성기준으로 생각
- 다대일 : @ManyToOne ->제일 많이 씀
- 일대다 : @OneToMany
- 일대일 : @OneToOne
- 다대다 : @ManyToMany -> 쓰지마! 멈춰! ->일대다, 다대일로 풀어서 사용.
- 단방향, 양방향
- 테이블
- 외래 키 하나로 양쪽 조인 가능
- 방향이라는 개념이 없음 ㅋㅋㅋ - 객체
- 참조용 필드가 있는 쪽으로만 참조 가능.
- 한쪽만 참조하면 단방향
- 양쪽이 서로 참조하면 양방향.
- 테이블
- 연관관계 주인
- 테이블은 외래 키 하나로 두 테이블이 연관관계 맺음
- 객체 양방향 관계는 A->B, B->A 처럼 참조 두개
- 객체 양방향 관계는 참조가 2군데 있음. 둘 중 테이블의 외래키를 관리할 곳 지정 필요
- 연과관계 주인 : 외래키를 관리하는 참조 -> 주인에서만
- 등록, 변경 가능.
- 주인의 반대편 : 외래키에 영향을 주지 않음. 단순 조회만 함.
2. 다대일 단방향
- 데이터 베이스 기준으로 "다"쪽에 FK가 있어야 함.
- @JoinColumn으로 Team 참조값과 TEAM_ID(FK)를 매핑함.
- 가장 많이 사용함.
- 반대는 일대다
- Member->Team
@ManyToOne
@JoinColumn(name = "TEAM_ID") //Team 객체와 Team FK를 매핑
private Team team;
3. 다대일 양방향.
- 반대 쪽 사이드 추가
- 추가해도 테이블 변경 없음
- 단지 조회 기능만 함.
- Team -> Member
@OneToMany(mappedBy = "team") //일대다 매핑에서 나는 뭐랑 연결되어있지? Member 클래스의 Team 필드명.
private List<Member> memberList = new ArrayList<>();
4. 다대일 양방향 정리
- 외래 키가 있는 쪽이 연관관계 주인
- 주인 아닌곳에 mappedBy 적용
- 양쪽을 서로 참조하도록 개발
- 단방향을 먼저 잘 설계하고 나중에 필요시 양방향으로 추가하자
- 그래도 테이블에 영향 없다.
'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
일대일[1:1] (0) | 2021.08.10 |
---|---|
일대다[1:N] (0) | 2021.08.10 |
[예제] 연관관계 추가 (0) | 2021.08.10 |
양방향 연관관계와 연관관계 주인 - 주의점 (0) | 2021.08.10 |
양방향 연관관계와 연관관계 주인. (0) | 2021.08.10 |
Comments