inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

강의 자료

@EntityListeners로 오딧항목을 업데이트 하려는데 다른 테이블도 같이 업데이트 됩니다.

254

김정진

작성한 질문수 1

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
안녕하세요. 오딧항목 처리부분 구현해 보다가 이상하게 동작하는 부분이 있어서 문의드립니다.
 

Car - Body < Part

구조가 있을 때, 즉 Car 는Body 와 1:1,Body 와 Part 는 1:n 관계가 있습니다.

JPA에서는 모두 양방향 참조로 Car에서 Part 까지 접근 가능하고, 연관관계 주인은 Car -Body 에서는Body 가,Body < Part 에서는Part 가 가지도록 했습니다.

엔티티 저장을 편리하게 하기위해서 모든 OneToXXX 는 cascade 모드를 ALL 로 설정했습니다.

각 엔티티는 Audit 처리를 위해 Audit MappedSuperclass를 상속하고 이 클래스는 int 타입의 version 필드를 가지고 있습니다.

이 Audit 엔티티에 @EntityListeners 를 등록해서 Create, Update 시 버전을 올릴려고 AuditListener 을 구현하고 참조합니다.

오딧 테스트를 위해 @BeforeEach 애노테이션으로 데이터를 넣고 @Test 애노테이션으로 테스트를 수행했습니다.


Car 를 리포지토리에서 가져와서 Body 를 통해 Part 를 가져왔고 Part 의 이름을 업데이트 했습니다.


기대하는 값은 Part 테이블의 version 필드가 1 이 되는 것인데, Part 테이블은 정상적으로 1 로 업데이트 됐지만 Car 테이블의 버전도 1 로 바뀌었습니다. 

왜 이렇게 동작하는지 궁금합니다. 자세한 사항은 너무 길에서 별도 페이지에 작성하였습니다. 양해 부탁드립니다.

JPA Test를 위한 @BeforeEach 와 트랜잭션 분리

감사합니다.

JPA java spring-boot spring

답변 1

0

김영한

안녕하세요. 김정진님

이 부분은 저도 잘 모르겠습니다.

혹시 아시는 분 있으면 답변 남겨주세요.

감사합니다.

changeTeam 메서드 질문

0

35

1

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

0

88

1

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

0

129

3

MemberRepository 구현체

0

73

1

pdf 표현 질문드립니다.

0

78

1

로그가 남지 않는 문제.

0

100

1

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

0

80

2

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

0

79

2

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

0

104

2

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

0

61

1

스캔대상 질문드립니다.

0

50

1

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

0

92

1

save() vs saveAndFlush DB 통신 횟수

0

61

1

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

0

93

2

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

0

164

3

bulk insert 질문입니다.

0

191

2

교만했던 것 같아요.

0

152

1

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

0

154

2

동적 테이블에 대한 질문

0

90

1

영속성 전이와 연관관계

0

142

2

강의 10:25 질문

0

80

1

단건 update 질문

0

104

2

엔티티 와 도메인의 경계

0

132

1

UsernameOnlyDto 타입 type mismatch 오류

0

123

1