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
- CICD
- backend
- codedeploy
- rds
- DynamoDB
- 개발자
- serverless
- CodeCommit
- jpa
- aws
- s3
- ec2
- spring
- backenddeveloper
- QueryDSL
- Redis
- 오블완
- 티스토리챌린지
- 스터디
- Docker
- Spring Boot
- sqs
- MSA
- goorm
- codebuild
- 백엔드
- orm
- mapping
- kakao
- 자격증
Archives
- Today
- Total
gony-dev 님의 블로그
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 다양한 매핑관계 본문
연관관계 매핑이란, 객체의 참조와 테이블의 외래 키를 매핑하는 것을 말한다.
예를 들어 설명하자면, 멤버와 팀에 대한 테이블이 존재하고 팀에는 여러 명의 멤버들이 연관되어 있으므로
멤버를 조회시 어느 팀에 소속되어 있는지 확인할 수 있는 방법이 바로 매핑인 것이다.
"매핑에는 단방향과 양방향이 존재한다."
1. 매핑의 기초, 방향
1. 방향에는 단방향과 양방향이 존재한다.
- 한 객체에서 일방적으로 다른 객체만 참조하는 관계 = 단방향 객체
- 두 객체가 서로 참조하는 관계 = 양방향 객체
- 사실 양방향 객체는 단방향이 서로 연결되어 있는 형태로가 이해하면 쉬울것이다.
2. 양방향 매핑
- 연관관계를 이해하기 위해서는 객체와 테이블 간에 연관관계를 맺는 차이를 이해할 필요가 있다.
- 다음은 멤버와 팀 간의 연관관계를 매핑하는 sql문이다.
SELECT *
FROM MEMBER M
JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID
SELECT *
FROM TEAM T
JOIN MEMBER M ON T.TEAM_ID = M.TEAM_ID
- 위 코드를 보면 Member의 Team_ID 외래키 하나로 양방향 연관관계를 가진다는 것을 알 수 있다.
- 양방향 매핑에는 몇 가지 규칙이 존재한다.
- 객체의 두 관계 중 하나를 연관관계의 주인으로 지정!
- 연관관계 주인만이 외래 키를 관리할 수 있다!
- 주인이 아닌쪽은 read만 가능하다.
- 주인은 mappedBy 속성 사용이 불가능하다.
※ 규칙을 지키지 않으면 혼나지는 않겠지만..(혼나려나) 무한 루프 문제가 발생할 수 있으니 조심해야 한다.
'Spring > JPA' 카테고리의 다른 글
[JPA] 프록시와 연관관계 (1) | 2024.11.11 |
---|---|
[JPA] 고급 매핑 (0) | 2024.11.10 |
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 엔티티 매핑 (0) | 2024.08.28 |
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 영속성 관리(플러시와 준영속 상태) (0) | 2024.08.12 |
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 영속성 관리 (0) | 2024.08.08 |