Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Tags
more
Archives
Today
Total
관리 메뉴

지우쓰 개발일기

[JPA] 연관관계 Mapping (1) 본문

Spring Boot/JPA

[JPA] 연관관계 Mapping (1)

jiwoo-kimm 2020. 9. 10. 03:11

본 포스팅은 자바 ORM 표준 JPA 프로그래밍 (김영한 저)을 읽고 정리한 내용입니다.

 

자바 ORM 표준 JPA 프로그래밍

에이콘 오픈 소스 프로그래밍 시리즈. 이 책은 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다룬다.

www.aladin.co.kr

 


연관관계 Mapping


객체의 참조테이블의 FK를 매핑
  • 방향(Direction)

    • 객체관계: [단방향, 양방향]

    • 테이블관계: 양방향

  • 다중성(Multiplicity)

    • [다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:N)]

  • 연관관계의 주인(Owner)

    • 양방향 연관관계인 경우 주인을 정해야 함

  • 객체와 테이블 연관관계의 차이

객체 연관관계 테이블 연관관계
서로 다른 단방향 관계 2개 양방향 관계
참조 FK
객체 그래프 탐색 JOIN

 

N:1 단방향 연관관계


@JoinColumn

FK 매핑
속성 기능 기본값
name 매핑할 FK 이름 필드명 + _ + 참조하는 테이블의 PK
referencedColumnName FK가 참조하는 대상 테이블의 컬럼명 참조하는 테이블의 PK 컬럼명

 

@ManyToOne

N:1
속성 기능 기본값
optional false이면 연관 엔티티가 항상 있어야 함 true
fetch global fetch 전략 설정 @ManyToOne=FetchType.EAGER
@ManyToOne=FetchType.LAZY
cascade 영속전 전이 기능 사용  

 

양방향 연관관계


단방향 매핑만으로 테이블과 객체 간 매핑은 완료되었지만,
객체 그래프 탐색 기능을 위해 양방향 매핑을 추가할 수 있다.

@OneToMany

1:N
  • mappedBy

    • 양방향 관계일 때 테이블의 FK를 관리할 관계(Owner) 지정

    • Owner가 아닌 쪽에 Owner(필드 이름)을 지정하면 자동으로 매핑됨

    • Owner만 FK 값을 변경할 수 있고, 아닌 쪽은 객체 그래프 탐색만 가능

 

구현 시 주의사항

  • 객체를 고려해서 Owner와 Onwer가 아닌 쪽 모두 값을 입력해야 함

  • 객체를 add 하는 것 뿐만 아니라 기존 관계를 제거하는 등, 로직을 견고하게 작성해야 함

'Spring Boot > JPA' 카테고리의 다른 글

[JPA] 상속관계 Mapping  (0) 2020.09.13
[JPA] 연관관계 Mapping (2)  (0) 2020.09.12
[JPA] Persistence Context  (0) 2020.09.09
[JPA] JPQL 개요  (0) 2020.09.09
[JPA] CRUD 기본  (0) 2020.09.09
Comments