Spring 일정 관리 앱 만들기 구현 중 문제점

김현찬·2025년 5월 12일

첫번 째 문제.

  • 일정을 생성하는 기능을 만들던 중 Postman으로 테스트해보니 에러가 발생했다.

  • 문제 지점을 못 찾겠어서, 디버깅을 시도해 문제 지점을 색출했다.

확인해본 결과 sRDto의 값이 null로 들어가고 있는 사실을 확인했다.

그래서 sRDto에도 @RequestBody어노테이션을 사용해보니, 이번엔 Bad Request가 출력됐다.

이 문제에 대해 알아보니, @RequestBody 어노테이션으로 지정할 수 있는 파라미터는 하나 뿐이어서 @RequestBody어노테이션을 사용하지 않은 sRDto에는 null이 들어가는 문제였다.

이 문제를 해결하기 위해 두 개 였던 RequestBody 클래스를 하나로 묶어서 해결했다.

두번 째 문제.

계속 진행하다 Repository레이어 부분에서 계속 문제가 생겨 강의 내용을 다시 찾아보며 내 코드 상태에 맞게 따라해보았다.

이후 실행하니 이번엔 java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (schedule.schedule, CONSTRAINT schedule_ibfk_1 FOREIGN KEY (userId) REFERENCES user (userId))
에러와 함께 500 에러가 발생했다.

해당 내용을 구글에 검색 해보았고, 외래키로 설정된 userIduser테이블에 존재하지 않아서 생기는 문제라는 사실을 알았다.

JdbcInsert를 사용해 id값을 user컬럼에 넣어준 것 같은데 뭐가 문제인지 한참을 헤멨다.

계속 살펴보던 중 어차피 외래키를 참조하는거라면, 굳이 schedule컬럼에는 id를 넣을 필요가 없지 않을까? 라는 생각에 해당 구문을 지웠다.

해당 구문을 삭제하니, 정상적으로 데이터가 생성되었다.

회고

Spring을 이용해 일정을 관리하는 앱을 만들어보며, 3계층 구조를 왜 사용하고, 어떤 흐름으로 이어지는지에 대해서 더 자세히 알 수 있었다. 그러나, 그 흐름을 내가 원하는 형태로 가공하는 부분에서 정말 많은 어려움을 겪었고, 결국 기존에 설계했던 틀을 간소화하고, 바꿔가며 진행했다.

트러블이 발생하는데, 그 원인에 대해 검색을 해보니 내가 겪고있는 문제에 대한 부분은 찾아보기 어려웠다. 내가 검색을 잘 못 했거나, 다른 사람들은 하지 않는 아주 기초적인것들을 놓치고 있다는 생각이 들었다.

처음 프로젝트를 생성하여 클래스를 만들 때 까지만 해도, 크게 어려울거라는 생각이 없었는데, 진행하며 뼈저리게 후회했다. 아무리 생각해도 지금의 결과물보다, 처음 구상했던 구조의 결과물이 훨씬 좋은 결과일텐데, 부족한 부분이 너무 많아 원하던 결과를 만들지 못한것이 분하다.

0개의 댓글