✍학습 키워드
연관관계매핑
RDBMS를 사용할때엔 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하기란 불가능하다. 주로 조인을 사용하는데, JPA에서도 연관관계를 표현할 수 있다.
- One To One: 일대일(1:1)
- One To Many: 일대다(1:N)
- Many To One: 다대일(N:1)
- Many To Many: 다대다(N:M) 등이 있다.
⇒ 어떤 엔티티를 중심으로 연관 엔티티를 보느냐에 따라 연관관계의 상태가 달라진다.
영속성 전이 (데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성)
- 영속성 전이(cascade)란 특정 엔티티의 영속성 상태를 변경할 때 그 엔티티와 연관된 엔티티의 영속성에도 영향을 미쳐 영속성 상태를 변경하는 것을 의미한다.
📝새로 배운 개념
- 단방향: 두 엔티티의 관계에서 한쪽의 엔티티만 참조하는 형식이다.
- 양방향: 두 엔티티의 관계에서 각 엔티티가 서로의 엔티티를 참조하는 형식이다.
⇒ 연관관계가 설정되면 한 테이블에서 다른 테이블의 기본값을 외래키로 갖게 된다.
일대일매핑
상품 테이블 ↔ 상품정보 테이블의 일대일 관계처럼 하나의 상품에 하나의 상품정보만 매핑되는 구조는 일대일 관계라고 볼 수 있다. (left outer join)
- @OneToOne 어노테이션은 다른 엔티티 객체를 필드로 정의했을 때 일대일 연관관계로 매핑하기 위해 사용된다.
- @JoinColumn 어노테이션을 사용해 매핑할 외래키를 설정하는데, 해당 어노테이션은 기본값이 설정돼 있어 자동으로 이름을 매핑하지만 의도한 이름이 들어가지 않기 때문에 name 속성을 사용해 원하는 칼럼명을 지정하는 것이 좋다.
다대일, 일대다 매핑
- 상품과 공급업체 관계처럼, 상품 테이블 입장에서 볼 경우에는 다대일(상품 여러개를 공급업체가 번호화), 공급업체 입장에서 볼 경우 일대다(하나의 공급업체가 여러개 상품 취급) 인 경우의 매핑
다대다 매핑
- 실무에서 거의 사용되지 않는 구성이나, 상품과 생산업체의 예로 들자면 한 종류의 상품이 여러 생산업체를 통해 생산될 수 있고, 생산업체 한 곳이 여러 상품을 생산할 수도 있다.
- 다대다 연관관계에선 중간테이블을 통해 연관 엔티티 값을 가져올 수 있으나, 예기치 못한 쿼리가 생길 수 있어 관리가 힘든 문제가 생길 수 있기 때문에 중간테이블을 생성하는 대신 일대다 다대일로 할 수 있는 중간 엔티티로 승격시켜 JPA에서 관리하는 것이 좋다.
728x90
'개발 공부 기록 > 07. TIL' 카테고리의 다른 글
스프링 부트 핵심가이드 TIL - 9장 (액추에이터) (0) | 2023.10.12 |
---|---|
스프링 부트 핵심가이드 TIL - 8장 (유효성 검사와 예외처리) (0) | 2023.10.11 |
스프링 부트 핵심가이드 TIL - 6장 (Spring Data JPA 활용하기) (1) | 2023.10.09 |
스프링 부트 핵심가이드 TIL - 5장 (테스트 코드 작성하기) (0) | 2023.10.07 |
스프링 부트 핵심가이드 TIL - 4장 (ORM) (0) | 2023.09.29 |