[ JPA ] 다양한 연관관계 매핑2

유기훈·2022년 9월 27일
0

JPA

목록 보기
8/13
post-thumbnail

일대일 관계

주 테이블이나 대상 테이블 중에 외래 키 선택 가능

  • 주 테이블에 외래 키
  • 대상 테이블에 외래 키

※ 외래 키에 데이터베이스 유니크(UNI) 제약조건 추가

    //Member.class
    @OneToOne
    @JoinColumn(name = "LOCKER_ID") //야가 연관관계 주인
    private Locker locker;
    
    //Locker.class
    @OneToOne(mappedBy = "locker")
    private Member member;

다대일 양방향 매핑과 거의 유사하다.
다대일 양방향 매핑처럼 외래 캐가 있는 곳이 연관관계의 주인이다.

db설계시에 지금은 일대일 관계인 테이블이 나중에 바뀔 우려를 고려해 보아야 한다. 그래서 외래키를 설정할 테이블을 고심해서 설정한 후 domain 설계 시에 외래키를 갖고 있는 테이블 쪽 Entity를 연관관계의 주인으로 설정해주는 것이 좋다.

주 테이블에 외래 키

  • 주 객체가 대상 객체의 참조를 가지는 것 처럼 주 테이블에 외래 키를 두고 대상 테이블을 찾음
  • 장점: 주 테이블만 조회해도 대상 테이블에 데이터가 있는지 확인 가능
  • 단점: 값이 없으면 외래 키에 null 허용

대상 테이블에 외래 키

  • 장점: 주 테이블과 대상 테이블을 일대일에서 일대다 관계로 변경할 때 테이블 구조 유지
  • 단점: 프록시 기능의 한계로 지연 로딩으로 설정해도 항상 즉시 로딩됨

/
/
대상 테이블에 외래 키가 있는 유형의 단점이 크기 때문에 실무에서는 주 테이블에 외래 키 방식을 사용하자!

profile
개발할 수 있어 감사하다

0개의 댓글