Project/Personal Project

SpringBoot - JPA / 일정관리프로그램(트러블 슈팅)

Anews 2024. 10. 17. 11:04
배경
User(회원) 수정기능 개발 완료 후
Postman 사용해서 테스트 중 상태코드 200으로 정상 작동 하였는데
DB값이 수정되지 않는 현상 발견
발단 및 전개
1. entity, requestDto, responseDto, controller, service의 코드를 면밀하게 살펴보았으나 문제없음
2. 디버깅 모드로 controller와 service에 Postman으로 요청한 값이 전달되는지 확인 -> 정상
절정
LLM 모델 중 perplexity URL : https://www.perplexity.ai/ 
사용하여 해당 상황을 설명
위와 같이 상황을 설명하였더니

이렇게 답변해 주었고 천천히 읽어 내려가다 "트랜잭션 관리"에서 아차 싶었고
바로 코드를 확인해 보니 @Transactional이 빠져있는 것을 확인
수정 후 다시 테스트해 보니 정상적으로 기능이 작동하였다.

결말 및 느낀 점
User 수정코드의 문제점을 찾으면서 기존에 만들어두었던 다른 수정코드들도 확인하였음에도
@Transactional이 빠진 것을 확인하지 못하였고
Postman에서 상태코드가 200으로 정상작동하는데 DB값이 변하지 않는 것에 대한 의구심이
JPA를 배우면서 그렇게도 중요하다고 들었던 영속성 콘텍스트 문제임에 너무 허탈하였다.

엔티티가 영속성 콘텍스트에서 관리되지 않아 update의 변경감지가 작동하지 않는다는 생각까지 미치지 못하였다.

앞으로는 변경사항이 있는 부분에 대해서 @Transactional을 잊지 않는 것도 중요하겠지만
동일한 오류가 발생하다면 잊지 않도록 한 번 더 상기시키고자 트러블 슈팅 주제로 삼았다.

또한 영속성 콘텍스트에 대해 완벽하게 이해하지 않고 프로젝트진행에 급급하여 미뤄둔 추가 공부를
빠르게 진행해야겠다고 생각했다.