-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
관계 테이블 저장 오류 관련하여 질문드립니다.
21.08.27 00:17 작성 조회수 159
0
안녕하세요. 강의 정말 잘 듣고 있습니다.
조회에서 조회가 안 되길래, 로그를 보니, tag 테이블에는 저장되고 있으나, account와 tag의 관계를 저장하게 되는 account_tags 테이블에 저장을 하지 않는 것을 확인했습니다. ( 로그에 해당 insert문이 없는 것 확인 )
그래서 accountService.addTag 에서 가장 하단에 accountRepository.save(account);를 추가 해 주니,
해당 테이블에 insert도 정상적으로 되고, 조회도 되는 것을 확인했습니다.
강의 들으며, 동일하게 코딩했다고 생각하고 있습니다만 이러한 차이가 발생하는 것이, 버전이 변경되면서 변경점이 생긴 것인지, 제가 잘못 한 부분이 있는 것인지 판단이 안 되네요.
더불어, 제 코드가 잘못 된 것이라면, 관계 테이블에는 tagRepository에서 save 할 때 같이 저장되는 것인지,
accountService.addTag 메소드의 byId.ifPresent~~~ 시점에 저장되는 것인지도 궁금합니다.
그럼 활기찬 나날되세요~
답변을 작성해보세요.
0
백기선
지식공유자2021.08.27
안녕하세요.
"그래서 accountService.addTag 에서 가장 하단에 accountRepository.save(account);를 추가 해 주니,
해당 테이블에 insert도 정상적으로 되고, 조회도 되는 것을 확인했습니다."
=> 코드를 보고 말씀드리는게 아니라서 정확하진 않지만 혹시 AccountService에 @Transational이라는 애노테이션이 적용되어 있나요? 해당 애노테이션이 없는 경우 객체 변경 내역을 JPA 적용하지 않고 끝냈었다가 이후에 명시적으로 save를 호출해주어 DB에 적용된 것 같은 정황으로 들립니다.
관계 테이블에는 트랜잭션이 끝날 때 account의 tags 객체가 바뀐것을 JPA가 감지하고 insert 쿼리를 발생시킵니다. 정확한 SQL과 SQL 실행 타이밍이 궁금하시다면 디버거를 사용해 보시면 좋습니다.
감사합니다.
답변 1