이 학습 자료는 김영한님의 인프런 강의를 참고해서 만들었습니다.
<객체와 테이블의 차이>
- 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다.
- 객체는 참조를 사용해서 연관된 객체를 찾는다.
1. 단방향 연관관계
1.1 객체를 테이블에 맞춰서 모델링
1.2 객체 지향 모델링(ORM 매핑)
2. 양방향 연관관계와 연관관계의 주인
2.1 양방향 매핑
- 단방향 → 양방향 매핑을 할 경우 테이블 연관 관계는 변화x(Join만 하면 됨)
- 객체의 양방향 관계는 서로 다른 단방향 연관관계 관계가 2개로 이루어져 있음
- 반면에 테이블에서는 외래키 하나로 양뱡향 연관관계를 가짐
2.2 연관관계의 주인(Owner)
- 객체의 두 관계중 하나를 연관관계의 주인으로 지정
- 연관관계의 주인만이 외래 키를 관리(등록, 수정)
- 주인이 아닌쪽은 읽기만 가능, mappedBy 속성으로 주인 지정 필요
- 주인은 mappedBy 속성 사용X
2.3 연관관계의 주인을 정하는 방법
- 외래 키가 있는 곳을 주인으로 정하면 된다.
- 주의 사항
- 양방향 매핑시 연관관계의 주인에 값을 입력해야 한다. → 양쪽 둘 다 매핑을 하는 것은 객체 지향적으로 좋은 방법(순수 객체 상태를 고려)
- 무한루프를 조심하자. ex)
toString()
, lombok, JSON생성 라이브러리 - JSON생성 라이브러리 사용 시 Controller에 Entity를 반환하지 마라 → DTO를 변환하여 반환
'ORM > JPA' 카테고리의 다른 글
자바 ORM 표준 JPA 프로그래밍 - 고급 매핑 (0) | 2021.08.16 |
---|---|
자바 ORM 표준 JPA 프로그래밍 - 다양한 연관관계 매핑 (0) | 2021.08.15 |
자바 ORM 표준 JPA 프로그래밍 - 엔티티 매핑 (0) | 2021.08.10 |
자바 ORM 표준 JPA 프로그래밍 - 영속성 관리 (0) | 2021.08.09 |
자바 ORM 표준 JPA 프로그래밍 (0) | 2021.08.08 |