생각정리/항해99

[주특기 1주차] Spring 7일차

생각중임 2023. 9. 1. 00:10

Spring 숙련주차 2주차 강의


Entity 연관 관계

Entity는 JPA를 이용해서 자동으로 DB의 테이블을 구성해 준다.

Entity가 하나의 테이블로 객체하나가 하나의 row라고 생각하면 편하다.

필드가 컬럼으로 다양한 어노테이션으로 설정이 가능하다.

관계를 설정하고 cascade옵션을 이용해서 영속성 전이를 이용해 자동 연결 등록 및 삭제가 가능하다.

  • 1대1 관계(OneToOne) : 엔티티 간에 1대1로 맺어준다,
    • 단방향 : 외래 키 주인을 직접 지정해 주인만 외래 키를 등록, 수정, 삭제를 할 수 있고 반대쪽은 외래 키를 읽기만 가능하다.
    • 양방향 : 양쪽 다 등록, 수정, 삭제가 가능하다.
  • N 대 1 관계(ManyToOne) : N이 외래 키의 주인으로 있는 여러 개 대 1로 맺어준다.
    • 단방향 : N쪽에서 1을 참조할 수 있는 있다 (ManyToOne-JoinColumn 사용)
    • 양방향 : 1쪽에서 N을 참조할 경우 사용한다. (OneToMany-mappedBy 사용)
  • 1 대 N 관계(OneToMany) : 외래키의 주인은 1이지만 실제 외래 키는 N이 가지고 있다.
    • 단방향 : 1을 통해서 N의 외래키를 관리한다.
    • 양방향 : 일반적으로 존재하지 않음. join설정을 이용해 양방향처럼 구현은 가능하다.
  • N 대 M 관계(ManyToMany) : 중간 테이블을 생성하여 사용한다. (Entity를 구현하지 않으면 컨트롤할 수 없는 테이블로 자동 생성이 된다.)
    • 단방향 : 외래 키의 주인인 쪽에서만 컬럼을 관리, 참조가능
    • 양방향 : 외래 키의 주인인 쪽에서 관리를 하지만 반대쪽에서도 참조가능
엔티디를 하나의 테이블로 생각하고 구성을 하니 좀 더 쉽게 이해가 되었다.
관계 설정도 join을 이용한 데이터베이스 컨트롤로 생각을 하되 컨트롤 개념이 조금 달라 그 부분만 주의해서 생각해야겠다.
JPA를 통해서 쉽게 데이터베이스를 컨트롤이 가능해 편한 점이 많은데 가려져 있는 개념들을 빼먹지 않도록 여러 번 보면서 개념들 잘 잡아둬야겠다.