내일배움캠프 32일차 - Entity 연관 관계란 무엇일까?
Spring 프레임워크의 꽃이 폈다.
그것은 바로 Entity의 '연'의 꽃을 가진
'연관 관계' 이것을 어떻게 이해해야 하오....!
한 번 알아보자!
Entity 연관 관계란
1. Entity는 연관관계의 꽃으로 시작한다.
2. Entity로 RDB에서는 하나의 FK를 가지고 양쪽 테이블의 데이터를 모두 조회할 수 있지만 Entity의 경우 참조용 필드가 존재하는 쪽만 연관 관계를 가질 수 있다.
3. 흔히 단방향, 양방향 연관관계 라고 설명을 하는데 두 개의 엔티티에서 한쪽만 참조를 할 경우 단방향, 양쪽 모두 각각 단방향 참조를 할 경우 양방향 연관 관계라고 할 수 있다.
4. @OneToMany, @ManyToOne 등 어노테이션을 통해서 Entity 객체를 참조하여 연관 관계를 정의할 수 있다.
5. 그리고 연관관계는
- 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 -> 객체 양방향 관계는 A->B , B->A 처럼 참조가 2군데
- 객체 양방향 관계는 참조가 2군데 있음!! 따라서 둘중 테이블의 외래 키를 관리할 곳을 지정해야 함
- 연관관계의 주인 : 외래 키를 관리하는 쪽
- 주인의 반대편 : 외래 키에 영향을 주지 않음!! Read Only
를 갖는다.
6. 먼저 단방향 연관관계 (@ManyToOne)는 RDB 관계에서 1:N 구조의 테이블에서 N에 해당되는 자식 테이블과 매핑되는 엔티티 객체에서 사용한다.
7. @JoinColumn 어노테이션을 사용해 해당 테이블의 FK 컬럼을 명시한다.
8. 필드는 자료형 대신 부모 테이블과 매핑되는 엔티티 객체를 참조형 필드로 선언한다.
9. 두번째인 양방향 연관관계(@OneToMany)는 RDB 관계에서 1:N 구조의 테이블에서 1에 해당되는 부모 테이블과 매핑되는 엔티티 객체에서 사용한다.
10. mappedBy 옵션을 통해 참조 객체의 필드명을 명시한다.
11. 1:N의 구조에서 N에 해당되는 데이터를 가져와야 하니 List 자료형을 사용하며 제네릭으로 매핑 관계에 있는 엔티티 객체를 참조한다.
12. @ManyToMany는 현업에서 잘 사용을 안 한다고 한다. 왜냐하면 연결 테이블이 단순히 연결만하고 끝나지 않음
=> JoinTable 가 단순히 join 을 위한 테이블로서 다루기 힘듦 : 주문시간, 수량 같은 데이터가 들어올 수 있음
따라서 JoinTable 을 하나의 Entity 로 승격시켜서 만들어 두면 해결 가능하다!!!
13. 이렇게 짧게나마 Entity를 알아보았다.
14. 이것만 알아도 Spring은 할 수 있지 않을까?
https://yeong-development-note.tistory.com/19
Spring JPA / Entity 연관관계
지난 포스팅에서는 JPA의 Entity에 대해서 작성을 했었는데요. Entity란 JPA에서 관리하는 DB와 매핑이 되는 객체를 뜻하며 객체 클래스 위에 @Entity을 사용해서 JPA에게 '해당 객체는 Entity로 사용을 할
yeong-development-note.tistory.com
https://terianp.tistory.com/170
Spring JPA (6) - JPA 개념 잡기 : 엔티티 연관관계 매핑 1:N, N:1, N:M, 1:1
1. 연관관계 매핑 시 고려사항 3가지 1) 다중성 - 관련 어노테이션 기억!! 다중성 어노테이션 주의사항 N:1 @ManyToOne 1:N @OneToMany 1:1 @OneToOne N:M @ManyToMany 실무에서 거의 사용 X 2) 단방향, 양방향 테이블
terianp.tistory.com
<출처>
오늘의 느낀 점
1. 방향이 중요하겠지?
2. 속도가 중요할까?
3. 인간은 기질이라는게 있을 텐데......
just do it