inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

자식 엔티티로의 영속성 전이에 대해서 질문 있습니다.

337

작성자 없음

작성한 질문수 0

0

먼저 다음과 같이 부모 자식 엔티티가 있습니다.

 

@Entity
public class Leaf {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "tree_id", referencedColumnName = "id")
    private Tree tree;
}
@Entity
public class Tree {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToMany(mappedBy = "tree", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Leaf> leaves = new ArrayList<>();
}

   

 Tree 엔티티는 부모이고 TreeRepository가 있는 상태입니다. Leaf 엔티티는 자식이고 Tree에 완전히 종속된다고 생각하여 Repository를 안 만들었습니다. 

 

이 때, 비영속된 Tree에 Leaf를 추가하고 save를 시키면 영속성 전이로 인해서 Leaf들까지 전부 다 insert 되는 것은 확인하였습니다.

 

여기서 질문은 이미 영속화가 되어 있는 Tree를 findById() 로 찾아온 다음에 연관관계를 매핑한 새로운 Leaf를 리스트에 추가하면 insert가 되지 않았습니다. (얄팍한 지식으로 더티체킹처럼 list에 새로운 Leaf가 추가되었네? -> insert 이렇게 될 줄 알았습니다.)

 

여기서 Leaf를 추가하려면 LeafRepository를 따로 만들어야 할까요?? 저는 Leaf가 Tree에 완전히 종속되는 엔티티인데  Tree를 통하지 않고 Repository를 따로 만들면 데이터가 불일치할 수 있는 통로가 생긴다고 생각해서 안 만들었었습니다.

 

 

영속성전이 spring-boot java JPA spring

답변 2

0

taehyun16

앗. 문제된 부분만 따로 프로젝트를 생성하고 질문을 작성하던 와중에 문제를 해결했습니다.

 

테스트 코드로 검증하는데 @Transactional 애노테이션을 붙여서 쿼리가 안 나갔던 문제였습니다...;;

 

@Transactional 없애고 돌리니까 제가 예상한대로 쿼리가 나갔습니다... 

 

답변 달아주셔서 감사합니다!! 덕분에 기운 얻고 해결한 것 같습니다 ㅎㅎ 

0

김영한

스스로 잘 해결하셨습니다^^

0

김영한

안녕하세요. taehyun16님

어떻게 확인하셨는지 전체 코드를 보여주세요.

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

 

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.

2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

changeTeam 메서드 질문

0

34

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

87

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

127

3

MemberRepository 구현체

0

71

1

pdf 표현 질문드립니다.

0

77

1

로그가 남지 않는 문제.

0

98

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

78

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

75

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

102

2

Sort 인터페이스는 잘 사용 안하나요?

0

59

1

스캔대상 질문드립니다.

0

48

1

하이버네이트6에서의 최적화에 이은 질문

0

92

1

save() vs saveAndFlush DB 통신 횟수

0

58

1

순수 JPA 리포지토리 코드 수정부분

0

91

2

bulk연산 후 flush하는 이유를 모르겠어요

0

163

3

bulk insert 질문입니다.

0

191

2

교만했던 것 같아요.

0

152

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

154

2

동적 테이블에 대한 질문

0

89

1

영속성 전이와 연관관계

0

141

2

강의 10:25 질문

0

78

1

단건 update 질문

0

104

2

엔티티 와 도메인의 경계

0

129

1

UsernameOnlyDto 타입 type mismatch 오류

0

123

1