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
- 생성자
- 감사기록
- Java
- Git
- KPT
- 변수의 다양성
- static
- 포맷은 최후의 보루
- #스파르타내일배움캠프
- 객체지향 언어
- 회고록
- JVM
- 클래스
- Java의 이점
- #내일배움캠프
- 해우소
- diary
- GitHub
- 메서드
- Github_token
- 성장기록
- TiL_1st_0419
- 스파르타내일배움캠프TIL
- 스파르타내일배움캠프
- 인스턴스
- Token
- #스파르타내일배움캠프TIL
- Diary 해우소
- 내일배움캠프
- 스레드
Archives
- Today
- Total
몬그로이
주의가 필요한 일대다 단방향 본문
일대다 단방향일 때
예를 들어
Team 과 Member 이라는 두 테이블이 있고, Team 에서 Member 를 참조하는 상황
<객체>
Team |
id |
List<Member> memberList |
Member |
id |
x |
<테이블>
TEAM |
TEAM_ID(PK) |
X |
MEMBER |
MEMBER_ID(PK) |
TEAM_ID(FK) |
위와 같이 TEAM 테이블에는 참조하는 대상인 MEMBER에 대한 정보가 없다
Team 엔티티 설정
@OneToMany
@JoinColumn //꼭 사용해야함 - 그렇지 않으면 자동으로 중간테이블 생성됨(조인테이블)
List<Member> members = new ArrayList<>();
query에서 team.getMembers().add(member);
를 입력한 경우 추가 query가 나가면서 Member 테이블이 업데이트로 나오기때문에
테이블이 많은 상태에서 운영하기엔 힘들 수 있음
따라서 반대의 경우인 다대일로 설정하고
대신 양방향으로 설정하는 것을 추천
일대다 양방향
JPA 스팩상 공식적으로 존재하진 않는 설정이지만 만들 수는 있음
관리(업데이트, 인서트)를 한 군데에서만 해야함
즉, 한 방향은 읽기전용으로 설정해야함
결론, 다대일 양방향을 사용하자
<객체>
Team |
id |
List<Member> members |
*@OneToMany
@JoinColumn(name = "TEAM_ID")
Member |
id |
Team team |
@ManyToOne
@JoinColumn (name = " TEAM_ID, insertable = false, updatable = false)
<테이블>
TEAM |
TEAM_ID(PK) |
x |
MEMBER |
MEMBER_ID(PK) |
TEAM_ID(FK) |
'Organizing Docs > Spring Docs' 카테고리의 다른 글
MVC 디자인패턴 (0) | 2024.07.18 |
---|---|
동시성 제어 요약 (0) | 2024.07.16 |
Jpa repository 메서드 명명규칙 - 공식문서 참고 (0) | 2024.07.12 |
QueryDSL (0) | 2024.06.30 |
Entity-Table 에 사용하기 좋은 어노테이션 기능 (0) | 2024.06.30 |