할 일 저장 기능을 구현한 API(/todos) 호출 시 발생하는 에러 해결
에러 로그:
jakarta.servlet.ServletException: Request processing failed: org.springframework.orm.jpa.JpaSystemException: could not execute statement [Connection is read-only. Queries leading to data modification are not allowed][insert into todos (contents,created_at,modified_at,title,user_id,weather) values (?,?,?,?,?,?)]
정상적으로 할 일을 저장하도록 코드 수정
User 테이블에 nickname 컬럼 추가 (중복 가능)
JWT에서 nickname을 추출하여 프론트엔드에서 화면에 출력
UserAdminController의 changeUserRole() 메소드 실행 전에 AOP 동작하도록 수정
AdminAccessLoggingAspect 클래스의 AOP 코드 수정
org.example.expert.domain.todo.controller 패키지의 todo단건조회시_todo가존재하지않아예외가_발생한다() 테스트 실패 수정
할 일 검색 기능 개선
weather 조건 추가 (있을 수도, 없을 수도 있음)
수정일 기준 기간 검색 추가 (시작 및 끝 조건 선택 가능)
JPQL 사용 및 적절한 메소드명 설정
필요 시 서비스 단에서 여러 개의 쿼리(JPQL) 사용 가능
Query문
을 쓰다보니 여러 @Param
도 받아서 처리하는 등 힘들었음.할 일을 저장할 때, 생성한 유저를 담당자로 자동 등록
JPA의 cascade 기능 활용
CommentController의 getComments() API 호출 시 발생하는 N+1 문제 해결
SQL 쿼리 성능 개선
findByIdWithUser JPQL 쿼리를 QueryDSL로 변환
N+1 문제 발생 방지
기존 Filter 및 Argument Resolver 제거
Spring Security로 접근 권한 및 유저 권한 유지
JWT 기반 인증 방식 유지