[JPA] 단방향,양방향 엔티티,1:1, 1:N 엔티티와 상속엔티티

jihun Choi·2023년 4월 15일
0
post-thumbnail
단방향, 양방향 엔티티
  • 주인 엔티티( @JoinColumn name값은 테이블 컬럼명 셋팅 )
    외래 키가 있는 테이블이 주인(외래키 값은 주인엔티티에 넣어줘야함)

    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;
  • 종속 엔티티
    -mappedBy에 엔티티 데이터명 셋팅

    @OneToMany(mappedBy = "team")
    private List<Member> members= new ArrayList<>();
1:1, 1:N 엔티티
  • 1:N 일경우 N인 테이블에 외래키가 있어야함!
  • 1:1 일경우 많이 호출되는 테이블 기준으로 외래키가 있는것이 유리!!
상속엔티티
  • 조인전략 - 테이블이 상위 클래스와 하위클래스로 나누어져 있는 테이블 매핑 방식
    • @Inheritance(strategy = InheritanceType.JOINED) 부모엔티티에 어노테이션 삽입
    • 하위엔티티 insert시 상위엔티티와 하위엔티티 insert문이 같이 날라감
    • 하위엔티티 조회시 상위엔티티와 하위엔티티 조인 후 조회함
  • DTYPE 컬럼을 추가하여 하위엔티티 구분
    • 상위 엔티티 @DiscriminatorColumn
    • 하위 엔티티 @DiscriminatorValue("데이터명")
  • 단일테이블 전략 - 하나의 디비에 전체 컬럼 추가
    • @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
  • 구현클래스 마다 테이블 전략 - 상위엔티티 테이블이 없고 상위테이블 컬럼이 하위테이블에 들어가있는 전략
    • @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    • 상위엔티티 클래스를 추상클래스로 선언(abstract 추가)
profile
성장을 위해 열심히 노력하는 개발자 입니다

0개의 댓글