[JPA] JPA @OneToOne - Shared Primary Key

ichubtou·2024년 1월 19일
0

JPA @OneToOne - Shared Primary Key


  • Shared Primary Key란?
    • 데이터베이스 모델링과 객체 관계 매핑(ORM)에서 사용되는 개념
    • 한 엔티티의 기본키를 다른 엔티티의 기본키이자 외래키로 사용
  • 특징
    • 기본 키 공유
      • 한 엔티티의 기본키가 다른 엔티티의 기본 키이자 외래 키로 동시에 사용
    • 데이터의 무결성과 일관성
      • 두 엔티티가 동일한 기본 키 값을 공유함으로써, 데이터의 무결성과 일관성을 유지하기 쉬움

예시

User

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

}

UserProfile

import javax.persistence.*;

@Entity
public class UserProfile {
    @Id
    private Long id;

    @OneToOne
    @MapsId
    @JoinColumn(name = "id")
    private User user;

}

사용 방법

User user = new User();

entityManager.persist(user);

UserProfile userProfile = new UserProfile();
userProfile.setUser(user);

entityManager.persist(userProfile);

  • @MapsId 를 사용하여 User 엔티티의 기본값이 UserProfile 의 기본키 값으로 복사 됨
  • UserProfile 엔티티를 생성할때 id값을 명시적으로 설정할 필요가 없음

0개의 댓글