728x90
Spring Boot JPA에선 양방향 관계와 단방향 관계가 있습니다. 이는 Entity 간의 참조 방향을 말합니다.
💠연관 관계 주인
💡 실제 데이터베이스에서 외래키를 가지는 엔티티 (테이블)을 말한다
- 양방향일 경우, mappedBy가 없는 쪽이 주인 (DB 조작 권한 가짐)
- 반대쪽(mappedBy 사용)은 읽기 전용
💠단방향 관계란?
한쪽 Entity만 다른 Entity를 참조하는 관계. 즉 연관관계 주인에게 연관 관계를 주입한다
Order → Member (주문이 회원을 참조, 반대는 없음)
@Entity
public class Order {
@Id @GeneratedValue
private Long id;
@ManyToOne
private Member member; // 단방향: Order만 Member를 참조
}
- Order 테이블에 member_id 외래키 컬럼 생성된다
- Member는 Order를 전혀 모른다
@ManyToOne
- N:1 에서 N에 해당하는 엔티티가 1에 해당하는 엔티티와 연관관계 매핑
@JoinColumn
실제 데이터베이스에서 외래키의 이름을 설정한ㄷ
💠양방향 관계 (Bidirectional)
양쪽 Entity가 서로를 참조하는 관계. 즉 연관관계 주인이 아닌 엔티티에게도 연관 관계를 주입한다
Order ↔ Member (주문은 회원을 참조하고, 회원도 주문 목록을 가짐
@Entity
public class Order {
@Id @GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;
// getter, setter 생략
}
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
@OneToMany(mappedBy = "member") // Order 엔티티의 member 필드 기준
private List<Order> orders = new ArrayList<>();
}
- mappedBy = "member" ← 반대쪽(주인 아님)에서 사용하는 필드명
- Order가 외래 키를 갖는 "연관관계의 주인"
- Member는 단순히 참조만 하며 DB에 영향 없음
728x90
'⚙️ Back-end > Spring' 카테고리의 다른 글
[Spring Boot] 3주차 스터디 : 7장 AWS에 데이터베이스 환경을 만들어보자 - AWS RDS (0) | 2025.02.04 |
---|---|
[Spring Boot] 3주차 스터디 : 6장 AWS 서버 환경을 만들어보자 - AWS EC2 (0) | 2025.01.24 |
[Spring Boot] 3주차 스터디 : 5장 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (1) | 2025.01.24 |
[Spring Boot] 2주차 스터디 : 4장 머스테치로 화면 구성하기 (0) | 2025.01.15 |
[Spring Boot] 2주차 스터디 : 3장 스프링 부트에서 JPA로 데이터 베이스를 다뤄보자 (1) | 2025.01.14 |