강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

한화이글짱짱님의 프로필 이미지
한화이글짱짱

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

영속성 전이(CASCADE)와 고아 객체

영속성 전이(CASCADE)에 대하여 궁금한 게 있습니다^_^

작성

·

170

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 비슷한게 있긴합니다.
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여기에 질문 내용을 남겨주세요.

안녕하세요,
영속성 전이(CASCADE)에 대하여 궁금한 게 있습니다.

CASECADE.ALL 사용시 부모Parent(@OneToMnay) -> 자식Child(@ManyToOne) 이런식으로 양방향 관계시 하나의 부모가 자식들을 관리를 할때(소유자가 하나인 경우)는 사용을 해도 괜찮다고 말씀을 주셨는데근데 사용을 하면 안되는 경우를 이제 자식Child 엔터티가 Member 엔티티와 @ManyToOne 관계를 가지게 되는 이런 경우를 말씀 하신걸까요 ㅠㅠ?? 아니면 Child에서 Member로 단방향 관계일때는 상관이 없고

// Case 1: 단방향
@Entity
public class Child {
    @ManyToOne
    private Parent parent;
    
    @ManyToOne
    private Member member;  // 단방향
}
// ====================================================================================
// Case 2: 양방향
@Entity
public class Child {
    @ManyToOne
    private Parent parent;
    
    @ManyToOne
    private Member member;  // 양방향
}

@Entity
public class Member {
    @OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
    private List<Child> childList = new ArrayList<>();
}

멤버에서 차일드를 알게된 양방향 관계일때 문제가 생긴다는 걸까요 ??

다른엔터티랑 CHILD랑 관계가 있다가 어떤 경우인지 이해가 안되서 그렇습니다ㅠ_ㅠ

답변 1

2

안녕하세요. 이용호님, 공식 서포터즈 y2gcoder입니다.

간단한 주문 관련 예시를 하나 가정해보고 싶습니다!

유저, 주문, 리뷰라는 세 엔티티가 있습니다.

리뷰에는 주문도 연관되어 있고, 유저도 연관되어 있습니다 🙂

언뜻 생각하기에는 주문이 cascade로 리뷰를 가지고 있는 게 편할 것 같아 그렇게 설정했습니다 🙂

주문이 삭제될 때는 리뷰도 같이 삭제됩니다.

그런데 만약 주문이 삭제되어도 유저의 마이페이지에서 작성했던 리뷰는 그대로 보여야 한다면?

이럴 때는 주문을 삭제할 때 리뷰도 같이 삭제하면 안됩니다!

이런 케이스에서 cascade 사용을 고려해보셔야 합니다 🙂

 

 

감사합니다.

자세한 설명 정말 감사합니다 ^_^ 이해가 쏙쏙 돼요 🧡

한화이글짱짱님의 프로필 이미지
한화이글짱짱

작성한 질문수

질문하기