
단방향 OneToMany 예시:
@Entity
public class Parent {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "parent_id") // FK가 자식 테이블에 생성됨
private List<Child> children = new ArrayList<>();
}
@Entity
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
단방향 ManyToOne 예시:
@Entity
public class Child {
@ManyToOne
@JoinColumn(name = "parent_id")
private Parent parent;
}
@Entity
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
Cascade Type에 대해 잘 모른다면 참고하세요
JPA에서 Cascade Type을 지정하지 않으면?
Cascade Type이란?JPA에서의 Cascade Type은 엔티티 간의 연관 관계에서 특정 작업(저장, 삭제 등)이 연관된 엔티티에도 전파되도록 설정하는 옵션 Cascade Type을 통해 부모 엔티티에 대한 작업이 자식 엔
cococotea.tistory.com
양방향 관계는 두 엔티티가 서로를 참조하는 관계를 말한다.
즉, A 엔티티가 B 엔티티를 참조하고, 동시에 B 엔티티도 A 엔티티를 참조하는 경우를 뜻한다.
사실 양방향 관계라는 것은 없고 단방향이 서로를 마주보고 있는것이다.
양방향 관계는 양쪽 엔티티에서 서로를 참조할 수 있어 더 복잡한 관계를 표현할 수 있 다.
양방향 OneToMany 예시:
@Entity
public class Parent {
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Child> children = new ArrayList<>();
}
@Entity
public class Child {
@ManyToOne
@JoinColumn(name = "parent_id")
private Parent parent;
}
여기서 `mappedBy` 속성은 자식 엔티티에서 부모 엔티티를 참조하는 필드를 지정한 다. 이를 통해 양방향 관계가 형성된 다.
@Entity
public class Parent {
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Child> children = new ArrayList<>();
}
@Entity
public class Child {
@ManyToOne
@JoinColumn(name = "parent_id")
private Parent parent;
}
이 설정으로 인해 `Child` 엔티티의 `parent` 필드가 관계의 주인이 되며, `Parent` 엔티티는 이 관계를 단순히 참조하게 된다.
| JPA 지연로딩, 즉시로딩, N+1문제 (1) | 2024.06.08 |
|---|---|
| FetchType.LAZY/FetchType.EAGER 에서의 N+1문제? (0) | 2024.06.01 |
| JPA에서 Cascade Type을 지정하지 않으면? (0) | 2024.06.01 |
| [JPA/Hibernate] Flush란? (0) | 2024.05.30 |
| [JPA/Hibernate]엔티티 수정/ 변경감지(Dirty Checking) (0) | 2024.05.30 |