@MapsId
-
[Spring JPA] @OneToOne 에서 @MapsId 를 이용해 컬럼갯수를 줄여보자!Back End/Spring Data JPA 2022. 1. 26. 15:11
JPA에서는 연관관계를 맺으면 연관관계를 맺은 두 테이블 중 하나에 FK필드를 디폴트로 생성하게 된다. @MapsId를 이용해 디폴트로 생성 될 컬럼을 줄이고, 그 값을 PK에 주입할 수 있다. (그리고 두 테이블은 FK로 연결되어 있지 않다.) # 엔티티 구조 # 테스트 코드 및 결과 mainEngine의 id=1 은 Car의 PK값인 1을 주입 받은 것이다. (보기좋게 Car의 Id를 직접세팅해줄 걸 그랬다.) select쿼리를 보면 join 이 없다. 이를 통해 mainEngine의 id는 foriegnKey 설정이 안되있음을 짐작할 수 있다. (JPA는 FK로 연결된 객체는 join문으로 가져온다.) # DDL-auto 로 생성된 테이블 구조 Hibernate: create table car ( ..