통합 데이터 컨테이너, 타입 안전한 프로토콜을 추구하다
- 인바운드 흐름에서 사용자 브라우저 요청 데이터는
Search Container를 통해 서비스 레이어로 타입 안전하게 전달됩니다. 📦
- 컨트롤러는 브라우저 요청 데이터를
Search Container에 채워 서비스 레이어에 전달하는 역할을 수행합니다. 🕹️
- 서비스 레이어는
Search Container를 받은 후 비즈니스 로직을 실행하고 리파지토리 레이어와 상호작용합니다. ⚙️
- 리파지토리는 완전한 JPA 엔티티 대신, VO에 담긴 필요한 부분(프로젝션)인
랩코드를 반환해야 합니다. ✂️
VO의 필드명 레코드는 필요한 데이터만 담는 프로젝션의 초기 의도를 반영하지만, 이를 강제할 수 있는 방안은 추가 연구가 필요합니다. 🤔
- 아웃바운드 흐름에서 서비스 레이어 처리 결과는
VO Container에 캡슐화되어 최종적으로 리스 (Response) 객체로 반환됩니다. 📤
리스 (Response)는 핸들러에서 성공/실패 여부를 판단하여 자동으로 변환됩니다. 🔄
Response 실드 인터페이스를 활용하여 반환 타입을 Success 또는 Fail로 명확히 제한함으로써 우아하고 타입 안전한 단일 반환을 구현합니다. ✨