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 | 31 |
Tags
- 삼각형의 완성조건
- 백준
- 이진수 변환
- Queue
- Stack
- StringTokenizer
- 클라이언트
- Programmers
- 문자열
- Lv1
- 프로그래머스 문자열 정렬
- COS Pro
- java
- lv2
- 버퍼
- 스택
- SWEA
- 프로그래머스
- 프로그래머스 풀이
- index of
- lv0
- 스프링부트 도커로 배포
- 알고리즘
- 오름차순 정렬
- 백준 N과 M 자바
- 스프링부트 도커
- 큐
- 프로그래머스 자바
- 자바
- 스프링부트 도커 배포
Archives
- Today
- Total
mun dev
[Spring] @ManyToMany 다대다연관관계 본문
@ManyToMany, 다대다 관계
다대다 관계의 경우 그대로 사용하면 안되고 반드시 정규화를 통해 중간 테이블을 만들어줘야 한다.
중간 테이블을 두어 일대다, 다대다 형태로 변형해줘야 한다.
프로젝트를 진행하며 예약테이블과 멤버테이블은 다대다의 관계를 가진경우를 만났다.
여러 멤버들은 여러 예약을 가질 수 있기 때문이었다.
초기 다대다 관계를 가진 멤버테이블과 예약 테이블이다.
@ManyToMany를 사용하려 보니 정규화의 문제가 있다는 것을 알게되어 중간테이블을 생성해주었다.
reservation과 reservation_info 테이블을 분리하여
reservation에는 예약 Id, 멤버 Id
reservation_info에는 예약에 관련된 정보들을 저장한다.
이렇게 되면 한 멤버가 여러 예약을 했고, 예약 상태에 따른 완료, 예약중, 취소 상태를 가져올 수 있다. (단, 상태컬럼을 두어 각 상태를 저장해둘 수 있는 컬럼을 정의 해두었다.)
실무 단계에서는, @ManyToMany는 절대 사용하지 말아야한다.
다대다 관계를 사용하고 싶은 경우라면 중간 테이블에 대한 클래스를 만들어서 @ManyToOne과 OneToMany의 조합을 만들어 사용해야 한다.
'공부 > Spring' 카테고리의 다른 글
[Spring] @ResponseBody를 이용한 데이터 반환 (0) | 2024.07.20 |
---|---|
[Spring] 공공데이터 API 데이터 DB에 저장하기 (0) | 2023.09.28 |
[Spring] 스프링 배치(Spring Batch)란? with 예제 (0) | 2023.06.29 |
[Spring] 민감정보 숨기기 Argument 입력 (0) | 2023.05.18 |
[Spring] JPA란? (0) | 2023.03.19 |