-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
피쳐 리스트업
- 인기안건조회
- 제목
- 추천수
- 공개범위
- 작성자 학과
- 남은날짜
- 안건목록조회
- 제목
- 추천수
- 공개범위
- 작성자 학과
- 남은날짜
- 추천여부
- 투표대상 안건조회
- 제목
- 작성자 학과
- 남은날짜
- 추천여부
- 안건등록
- 제목
- 내용
- 공개범위
- 유저ID
- 추천하기
- 유저 ID
- 안건 ID
- 투표하기
- 유저 ID
- 안건 ID
- 찬반여부
- 안건상세조회
- 제목
- 공개범위
- 작성자학과
- 설명
- 찬성수(nullable)
- 반대수(nullable)
고민한 점
이슈 조회 기능은 단순해 보였지만, 실제 구현 단계에서 여러 조건을 동시에 처리해야 하는 복합 구조라는 문제가 있었다. 정렬 기준(추천순/최신순), 공개 범위(ALL/COLLEGE/DEPARTMENT), 사용자 정보(단과대·학과), 그리고 항상 적용되는 isPassed 필터링까지 모두 결합되면서 OR/AND 조건이 함께 필요한 상황이 자주 발생했다. 이를 Spring Data JPA의 메서드 네이밍만으로 처리하려면 메서드 수가 기하급수적으로 늘어나고, 코드 중복 또한 피할 수 없었다.
이 문제를 해결하기 위해 QueryDSL을 도입했다. QueryDSL은 조건을 동적으로 조립할 수 있어, 공개 범위별 OR 조건, 사용자 정보 기반 필터링, 정렬 분기 등을 하나의 메서드 내에서 명확하게 표현할 수 있었다. 그 결과, 복잡한 조회 로직을 깔끔하게 정리하고, 서비스 레이어와 쿼리 레이어의 책임을 명확히 분리할 수 있었다.
QueryDSL 사용은 선택이 아니라 유지보수성과 확장성을 확보하기 위한 필연적인 결정이었다.
공수분담
곽재민: 인기안건조회, 안건목록조회, 투표안건상세조회
정원준: 투표 대상 목록 안건조회, 안건등록, 추천, 투표
설계도 작성
ERD
API 명세서
https://hail-parakeet-909.notion.site/API-2b25be1381ee81c2b8f3e9707a7ccbd7?source=copy_link
아키텍쳐

Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels