객체지향에서는 여러 객체에 나누어 객체 간 협력을 하며 기능
≫ 객체들을 서로 연결할 수 있도록 객체 간 참조 사용!
≫ 객체지향과 DB 간의 차이 발생
- 객체지향 : 객체 간 참조를 사용해 객체들을 연결
- DB : 테이블의 외래키를 사용해 정규화
연관관계 매핑
- JPA에서 성능을 결정하는 중요한 요소
- 연관관계 설정을 통해 객체 '참조'와 테이블의 FK를 매핑시켜 사용
- 방향성(Direction), 다중성(Multiplicity) ≫ 두 가지 기준 존재
방향성 (Direction)
방향 | 설명 |
단방향 | 두 엔티티 관계에서 한쪽 엔티티만 참조 |
양방향 | 두 엔티티 관계에서 양쪽 엔티티가 서로 참조 : A → B, B → A |
예)
1. 게시글 객체가 참조 변수를 통해 댓글 객체만 참조하면 ≫ 단방향
2. 댓글 객체도 게시글 객체를 참조 변수를 통해 참조하면 ≫ 양방향
** 테이블의 경우
FK로 양쪽 방향을 참조할 수 있으므로 언제나 양방향 관계 !
즉, FK인 POST_ID를 통해 양쪽으로 조인할 수 있음
연관관계 주인 (owner)
- 연관관계는 두 테이블 간의 관계
- 한 테이블에서 다른 테이블 PK를 FK로 가지게 됨
- 일반적으로 FK를 가진 테이블이 주인(owner)이 됨!
- 주인은 FK를 사용해 작업 가능
- 주인이 아닌 엔티티는 읽는 작업만 가능
다중성 (Multiplicity)
- 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)
- 예) 여러 댓글이 하나의 게시글에 속하는 상황
- 댓글 입장 ≫ 다대일 관계
- 게시글 입장 ≫ 일대다 관계
- 연관관계를 어떤 엔티티 중심으로 보는지에 따라 연관관계 표현은 달라짐
'spring' 카테고리의 다른 글
영속성 전이 (0) | 2024.09.15 |
---|---|
다대일 단/양방향 매핑 (0) | 2024.09.15 |
JPA Auditing / Base Entity (0) | 2024.09.14 |
Lombok (0) | 2024.09.13 |
@Query 어노테이션 (0) | 2024.09.13 |