1. 세션 키 불일치로 인한 오류
회원가입 및 로그인 후 Set-Cookie에서 session_id를 받아 특정 유저 조회 요청 시 헤더에 쿠키와 함께 전달했음에도 500 Internal Server Error가 발생했다. 그래서 코드를 다시 찾아보니 doFilter() 메서드에서 세션의 키값을 잘못 사용하고 있었다.
session.setAttribute()에서 설정한 키와 session.getAttribute()에서 참조하는 키가 달라 세션이 정상적으로 동작하지 않았음.
그래서 세션 키를 상수(SessionConst.LOGIN_USER)로 선언하여 일관성을 유지했고 잘못된 키를 일치 시키니 정상적으로 작동 되었습니다. VIEW가 아닌 JSON 통신 기반 프로젝트를 진행하다 보니 문제를 육안으로 확인하기 어려워서 앞으로 코드를 더 꼼꼼히 살펴보고 작성해야겠다고 생각했습니다..
session.setAttribute(Key) == session.getAttribute(key) 반드시 확인하기!

2. 엔티티 연관관계 설계
초기에는 유저와 일정 엔티티 두 개만 있었기에 연관관계 설정이 간단했다. 하지만 댓글 엔티티가 추가되며 연관관계가 복잡해져 CRUD 기능 구현이 어려워졌다. 단방향 매핑으로 시작했으나, 기능 추가 중 양방향 참조가 필요해 코드를 계속 수정해나가면서 사이드 이팩트가 발생해 카오스 그 자체였다.. 이번 프로젝트에서 청므으로 복잡한 연관관계를 다뤄보며 설계의 중요성을 체감했습니다. 엔티티 추가 시 단순히 CRUD를 넘어 미래의 확장성까지 생각하는 설계가 필요하다는 것을 뼈저리게 느꼈습니다!
그래서 다음 프로젝트 때는 연관관계는 처음부터 단순하고 명확하게 설계할 것입니다.
전체 프로젝트 회고
이번 프로젝트를 통해 인증/인가와 엔티티 추가로 인한 복잡한 연관관계 설정이라는 두가지 큰 과제를 마주하며 많은 시행착오를 겪었지만, 그 만큼 얻은 것도 많은 프로젝트였던 것 같습니다. 짧은 시간 안에 새로운 개념을 빠르게 학습하고 적용하면서 약간 혼란스럽기도하고 머리 속에서 개념들이 더 꼬인 것 같은 느낌이 들지만 이 과정 자체가 저 자신이 성장하는 단계가 아닐까 긍정적으로 생각하고 있습니다!! 다음 프로젝트에서는 더 나은 설계를 바탕으로 효율적이고 더 확장성 있는 코드를 작성하고 또 SPring Security를 학습해 새로운 인증 방식을 도전해보는 것이 계획입니다.
'Project' 카테고리의 다른 글
| 결제 시나리오 1. 결제 재시도 구현 (1) | 2025.03.17 |
|---|---|
| (Java / Spring) TossPayments PG 윗젯 Version2 연동 (0) | 2025.02.14 |
| 일정 관리 앱 프로젝트 트러블 슈팅 및 회고 (2) | 2024.12.09 |
| 키오스크 프로젝트 마무리 및 회고(feat.의존성) (2) | 2024.11.28 |
| 키오스크 프로젝트 트러블 슈팅 및 회고 (0) | 2024.11.22 |