다대일
05. 게시글 참조
https://swdy1233.tistory.com/256
[JPA 프로그래밍] - 05. 연관관계 매핑 기초
단방향 매핑예제 시나리오• 회원과 팀이 있다.• 회원은 하나의 팀에만 소속될 수 있다.• 회원과 팀은 다대일 관계다. @Entitypublic class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") p
swdy1233.tistory.com
일대다
비추천
a를 수정했는데 b테이블에 업데이트 쿼리가 나가고, 이는 테이블이 많은 운영 환경에서는 혼란을 야기할 수 있으므로 바람직한 방법이 아님.
일대다 단방향, 일대일 양방향 매핑보다는 trade off가 있어도 다대일 양방향 매핑을 사용하자!
일대일
주 테이블에 외래키 단방향

- 다대일(@ManyToOne) 단방향 매핑과 유사함
주 테이블에 외래키 양방향

- 다대일 양방향 매핑처럼 외래 키가 있는 곳이 연관관계의 주인
- 반대편은 mappedBy 적용


대상 테이블에 외래키 단방향

- 단방향 관계는 JPA 지원X
- 양방향 관계는 지원
대상 테이블에 외래키 양방향 = 주 테이블에 외래키 양방향과 매핑 방법이 같음

일대일 정리
• 주 테이블(주로 액세스 하는 테이블)에 외래 키
• 주 객체가 대상 객체의 참조를 가지는 것 처럼 주 테이블에 외래 키를 두고 대상 테이블을 찾음
• 객체지향 개발자 선호
• JPA 매핑 편리
• 장점: 주 테이블만 조회해도 대상 테이블에 데이터가 있는지 확인 가능
• 단점: 값이 없으면 외래 키에 null 허용
• 대상 테이블에 외래 키
• 대상 테이블에 외래 키가 존재
• 전통적인 데이터베이스 개발자 선호
• 장점: 주 테이블과 대상 테이블을 일대일에서 일대다 관계로 변경할 때 테이블 구조 유지
• 단점: 프록시 기능의 한계로 지연 로딩으로 설정해도 항상 즉시 로딩됨(프록시는 뒤에서 설명)
Member 객체의 locker 조회시 Member 테이블만 조회하면 안되고 Locker 테이블도 조회해와야 됨, 어쩌피 쿼리가 더 나가서 지연 로딩이 의미가 없다(?)
다대다
실무에서 사용하지 않음
'JPA' 카테고리의 다른 글
[JPA 프로그래밍] - 07. 고급 매핑 (0) | 2024.05.08 |
---|---|
[JPA 프로그래밍] - 05. 연관관계 매핑 기초 (0) | 2024.04.28 |
[JPA 프로그래밍] - 04. 엔티티 매핑 (0) | 2024.04.06 |
[JPA 프로그래밍] - 03. 영속성 관리 (0) | 2024.03.02 |