Ilhwanee's Devlog
로그인
Ilhwanee's Devlog
로그인
자바 ORM 표준 JPA 프로그래밍 6장 정리
Ilhwanee
·
2022년 8월 28일
팔로우
0
JPA
0
JPA
목록 보기
3/7
일대다, 일대일
일대다 단방향 매핑보다는 다대일 양방향 매핑을 사용해야 함
외래키 관리를 '다'쪽이 하는 것이 좋음
다른 테이블의 외래키를 관리하는 것이 성능, 관리 이슈가 있기 때문
일대일 관계에서는 어느쪽이든 외래키를 가질 수 있음
주 테이블에 외래 키를 두면 주 객체가 대상 객체를 참조하는 것처럼 객체지향적으로 사용 가능
대상 테이블에 외래 키를 두면 전통적인 데이터베이스와 같음
다대다
관계형 데이터베이스는 정규화된 테이블로 다대다 관계를 표현할 수 없기 때문에 중계 테이블을 사용해서 풀어냄
객체는 테이블과 다르게 객체 2개로 다대다 관계를 만들 수 있음
@ManyToMany를 사용해서 매핑
@JoinTable -> name : 연결 테이블 이름 지정, joinColumns : 현재 방향 매핑할 조인 컬럼 정보 지정, inverseJoinColumns : 반대 방향 조인 컬럼 정보 지정
getter로 대상 탐색하면 이너 조인 쿼리 날라감
양방향은 대상 엔터티에 mappedBy 추가하자
객체 2개로 다대다 관계를 만드는 방법은 단순하고 편리하지만 실무에서 사용하기엔 한계가 있음, 중계 테이블에도 FK를 제외한 컬럼들이 필요할 수 있기 때문, 복합키 엔터티로 다대다 관계 만들 수 있음
중계 엔터티를 직접 만들어 사용, 별도의 식별자 클래스 만들어야함
@IdClass 어노테이션을 사용하여 다중 컬럼(이어줄 두 FK)을 기본 키로 생성
복합키는 Serializable, equlas, hashCode를 구현해야 함, 기본 생성자 있어야 함, public이어야 함
@IdClass 사용하는 방법 외 @EmbeddedId 사용하는 방법도 있음
이렇게 부모 테이블의 기본 키를 받아서 자신의 기본키 + 외래 키로 사용하는 것을 식별 관계라 함
ORM 매핑에서 처리할 일이 많아지고 복잡함
다대다를 새로운 기본키 사용해서 구현하는 방법
자신만의 PK를 가지고 연결할 두 엔터티의 FK를 가지는 중계 엔터티를 사용하는 방법
앞선 복합 키 방법에 비해 식별자 클래스를 사용하지 않아서 복잡하지 않음
Ilhwanee
블로그 이전 -> https://pppp0722.github.io
팔로우
이전 포스트
자바 ORM 표준 JPA 프로그래밍 5장 정리
다음 포스트
자바 ORM 표준 JPA 프로그래밍 7장 정리
0개의 댓글
댓글 작성