카테고리 없음

Jpa 연관관계

머룽 2023. 4. 19. 09:55

jpa 연관관계

객체의 연관관계는 단방향 관계이다. 하지만 데이터베이스는 양방향 관계다. A -> B 객체밖에 접근만 가능하지만 데이터 베이스는 A <-> B 둘다 가능하다.
class A {
  B b;
} 
class B{
}
일반적으로 쓰는 단방향 연관관계다.
class A {
  B b;
}
class B {
  A a;
}
양방향 연관관계다. 정확하게는 서로 다른 단방향 관계 2개다.
  • @ManyToOne
    다대일 관계 매핑 정보다. 글로벌 페치 전략을 설정 할 수 있다. 즉시로딩, 지연로딩
  • @JoinColumn
    외래 키를 매핑 할 때 사용한다. 속성 중 name에 매핑할 외래 키 이름을 지정한다. 기본값은 필드명_참조하는 테이블의 기본키 컬럼명
  • @OneToMany
    일대다 관계 매핑 정보다. 글로벌 페치 전략을 설정 할 수 있다. 즉시로딩, 지연로딩 mappedBy 속성으로 연관관계 주인이 아님을 설정한다.
  • @OneToOne
    일대일 관계 매핑 정보다. 일대일 관계에선 테이블 중 어느 곳이나 외래 키를 가질 수 있다. OneToMany처럼 mappedBy속성이 있어 연관관계 주인이 아님을 설정 할 수 있다.
  • @ManyToMany
    다대다 관계 매핑 정보다. mappedBy를 통해 연관관계 주인이 아님을 설정 할 수 있다. 실질적으로 편하긴해도 실무에선 한계가 있다 그러므로 mapping 테이블을 만들어서 사용하자!
  • 연관관계 주인
    연관관계의 주인은 외래키가 있는 곳이 주인이다. 주인만이 등록, 수정, 삭제가 가능하다. 주인이 아닐경우엔 조회만 가능하다. 항상 ManyToOne이 연관관계의 주인이 되기 때문에 mappedBy 속성이 없다. 꼭 주인이 등록, 수정, 삭제를 하자!