Ilhwanee's Devlog
로그인
Ilhwanee's Devlog
로그인
자바 ORM 표준 JPA 프로그래밍 5장 정리
Ilhwanee
·
2022년 8월 27일
팔로우
0
JPA
0
JPA
목록 보기
2/7
연관관계
방향 : 당방향, 양방향 존재
연관관계의 주인 : 양방향 연관관계에는 연관관계의 주인이 필요
다중성 : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)
테이블에서는 한쪽 테이블에 FK가 존재하면 어느 방향으로든 조인 가능하지만 객체에서는 서로를 필드로 가져야 양방향 가능, 한쪽만 존재하면 단방향만 가능
객체 단방향
객체 A에서는 객체 B 필드를 통해 B를 가져올 수 있지만 객체 B에서는 객체 A 필드가 존재하지 않음, 한쪽에서만 참조
객체 양방향
객체 A, B 모두에서 서로를 가져올 수 있음, 결국 연관관계를 하나 더 만들어야함, 양쪽에서 서로 참조
@ManyToOne : 다대일 관계로 매핑, fetch는 패치 전략 설정 속성이고 @ManyToOne은 FetchType.EAGER, @OneToMany는 FetchType.LAZY가 default, cascade는 영속성 전이 기능 속성
@JoinColumn(name = "외래키이름") : 외래키 매핑에 사용, referencedColumnName은 외래 키가 참조하는 대상 테이블의 컬럼명 속성
엔터티 저장할 때 연관된 모든 엔터티는 영속 상태여야 함
연관된 엔터티를 삭제하기 전에 기존에 존재하는 연관관계를 먼저 제거해야함, 제거하지 않으면 외래키 제약조건으로 DB 오류 발생
@OneToMany(mappedBy = "반대쪽매핑필드명")
연관관계의 두 객체 중 하나의 테이블에서 외래 키를 관리해야 함, 연관관계의 주인만 데이터베이스 연관관계와 매핑되고 외래 키를 관리할 수 있음, 주인이 아닌 쪽은 읽기만 가능, mappedBy 속성 사용하지 않는 쪽이 주인임
다시 말해서 연관관계의 주인은 외래 키가 있는 곳, 일대다 관계에서는 항상 다 쪽이 외래 키 가짐
연관관계 주인쪽에서 연관관계 편의 메소드로 양쪽 모두 관계를 설정하는 메소드 작성 가능, 이때 새로운 객체로 관계를 수정하면 기존의 관계를 제거해야함
연관관계의 주인은 외래 키의 위치와 관련해서 정해야함, 비즈니스 중요도로 접근하면 안됨
Ilhwanee
블로그 이전 -> https://pppp0722.github.io
팔로우
이전 포스트
자바 ORM 표준 JPA 프로그래밍 1~4장 정리
다음 포스트
자바 ORM 표준 JPA 프로그래밍 6장 정리
0개의 댓글
댓글 작성