kwonslog / how-to-use-jpa

0 stars 0 forks source link

3회 - 엔티티의 연관관계 #14

Closed kwonslog closed 1 month ago

kwonslog commented 1 month ago

연관관계 매핑

엔티티는 하나의 테이블과 연결되고 테이블의 한 행(row)을 나타내는 객체이다. 연관관계는 일대일(@OneToOne), 다대일(@ManyToOne), 다대다(@ManyToMany) 관계가 있고 단방향, 양방향 매핑이 가능하다.

일대일 관계

A 엔티티와 B 엔티티가 1:1 관계인 경우 사용한다.

다대일 관계

A 엔티티와 B 엔티티가 N:1 관계인 경우 사용한다.

다대다 관계

A 엔티티와 B 엔티티가 N:N 관계인 경우 사용한다.

단방향 매핑

2개의 엔티티 A 와 B 가 있을때 A 엔티티는 B를 참조하고, B 엔티티는 A 를 참조하지 않는 관계를 말한다. 위에서 설명한 일대일, 다대일, 다대다 관계 모두 단방향 매핑이었다.

양방향 매핑

A 엔티티 안에서 B 엔티티를 참조하고 B 엔티티 안에서 A 엔티티를 참조하는 관계를 말한다. 양방향 관계의 경우 관계의 주인을 지정해야만 한다. 그렇지 않으면 단순히 단방향 + 단방향 매핑이 된다.

연관관계의 주인

데이터베이스에서 테이블과 테이블을 조인 하기 위해서 외래키를 사용한다. 예를 들어 A 테이블의 기본키 값을 B 테이블이 가지고 있으면 이것을 외래키 라고 한다. 만약 엔티티의 관계가 다대일 이라면 `다'에 해당하는 엔티티는 B 가 된다. 그리고 외래키를 소유하는 쪽이 관계의 주인이 된다. 관계의 주인은 양방향 매핑에서 사용된다.

연관관계 편의 메소드

양방향 매핑에서 두 엔티티 간의 관계를 설정하거나 해제할 때 양쪽 엔티티의 필드를 모두 업데이트 해야 한다. 이것은 데이터의 일관성을 유지하기 위한 방법이다.