개발 일지/Spring

[Spring JPA] 엔티티 간의 연관 관계 매핑

미숫가루설탕많이 2023. 2. 24. 08:59

 엔티티 클래스 간의 관계를 만들어주는 것을 연관 관계 매핑이라고 한다.

 

 Spring JPA에서 엔티티 간의 연관 관계 매핑은 객체지향 모델과 데이터베이스 모델 간의 일치를 보장하기 위해 사용된다. 이를 통해 객체 모델과 데이터 모델 간의 일관성을 유지하면서 객체를 사용하여 데이터베이스 작업을 수행할 수 있다.

 

 연관 관계 매핑은 단방향 연관 관계와 양방향 연관 관계로 구분할 수 있다.

 

  A클래스와 B클래스가 있다고 가정하고 A는 B의 정보를 갖고 있지만 B는 A의 정보를 알 수 없을 때, 한쪽 클래스만 다른 쪽 클래스의 참조 정보를 가지고 있기 때문에 이 관계를 단방향 연관 관계라고 한다.

 

 만약 둘 다 서로의 참조 정보를 갖고 있다면 양방향 연관 관계가 될 것이다.

 

 JPA는 단방향과 양방향 연관 관계를 모두 지원하지만 Spring Data JDBC는 단방향 연관 관계만 지원한다.

 

 

 

 

엔티티 간의 연관 관계 매핑 방법


 엔티티 간에 참조할 수 있는 객체의 수에 따라 일대일(1:1), 일대다(1:N), 다대일(N:1), 다대다(N:N)의 연관 관계로 나눌 수 있다.

 

 

 

 

일대일 관계(One-to-One Relationship)

 

 일대일 관계는 하나의 엔티티 인스턴스가 다른 엔티티 인스턴스와 연결되는 관계이다. 예를 들어, user와 phoneNumber이라는 두 개의 엔티티가 있으면 각 user는 하나의 폰넘버를 가지며, 각 폰넘버는 한 명의 사용자만 가질 수 있다.

 

 일대일 관계는 @OneToOne 애너테이션을 사용하여 관계를 매핑할 수 있다.

 

 

 

 

일대다 관계(One-to-Many Relationship)

 

 일대다 관계는 하나의 엔티티 인스턴스가 다른 엔티티 인스턴스의 여러 개의 인스턴스와 연결되는 관계이다. 예를 들어, student와 school이라는 두 개의 엔티티가 있으면 각 학교는 여러 명의 학생을 수용할 수 있지만 한 학생은 하나의 학교에만 소속될 수 있다. 이런 경우 student엔티티에 @OneToMany 애너테이션을 사용해서 school 엔티티와 관계를 매핑할 수 있다.

 

 

 

 

다대일 관계(Many-to-One Relationship)

 

 다대일 관계는 다수의 엔티티 인스턴스가 한 엔티티 인스턴스에 연결되는 관계이다.

 

 다대일 관계는 @ManyToOne 애너테이션을 사용해서 관계를 매핑할 수 있다.

 

 

 

 

다대다 관계(Many-to-Many Relationship)

 

 다대다 관계는 다수의 엔티티 인스턴스가 다수의 다른 엔티티 인스턴스와 연결되는 관계이다. 예를 들어, student와 course라는 두 개의 엔티티가 있으면 각 학생은 여러 개의 강좌를 수강할 수 있고, 각 강좌는 여러 명의 학생들에게 수업을 진행할 수 있으니까 다대다 관계가 성립한다.

 

 다대다 관계는 두 개의 엔티티 사이에 매핑 테이블을 생성해서 다대다 관계를 매핑할 수 있다.

'개발 일지 > Spring' 카테고리의 다른 글

[Spring MVC] 트랜잭션  (0) 2023.02.28
[Spring JPA] CASCADE  (0) 2023.02.27
[Spring] 엔티티 매핑  (0) 2023.02.23
[Spring MVC] 예외 처리  (0) 2023.02.19
[Spring MVC] @Valid / @Validated  (0) 2023.02.18