pile·
백엔드·직방zigbang·

TypeORM QueryBuilder 활용 사례: 재사용성을 높이는 방법과 테스트 작성하기

문제직방의 매물 조회 기능은 19개에 달하는 복잡한 필터 조건을 다루다 보니 QueryBuilder 코드가 중복되고 테스트와 유지보수가 어려워졌다.

접근빌더 패턴을 도입해 `ItemFindOptions`로 옵션을 정의하고 `ItemFindQueryBuilder`가 메서드 체이닝으로 동적 쿼리를 조립한다. Repository는 빌더를 통해 단일 진입점만 노출한다.

결과하나의 메서드로 여러 필터 조합을 처리하면서 빌더 단위 유닛테스트로 각 조건을 검증할 수 있게 됐다. 새 필터 추가가 쉬워지고 서비스 로직 테스트 난이도가 떨어졌다.

직방
직방 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 백엔드·네이버페이네이버페이·

    Composite PK에서 시작된 Spring Boot 4 / Spring Batch 6 업그레이드 기록

    문제Spring Data JDBC 의 Composite ID 적용을 위해 Spring Boot 3.5 → 4.0.1 업그레이드 시 Spring Batch, Kotlin, Jackson 등 전체 스택 메이저 전환 필요.

    접근Spring Boot 4 / Spring Batch 6 / Spring Framework 7 / Kotlin 2.3 / Jackson 3 / Kotest 6 / Gradle 9 / ojdbc11 순차 업그레이드. Composite ID 는 Persistable 인터페이스로 구현, JdbcDefaultBatchConfiguration 상속으로 메타데이터 저장.

    결과기술 부채 해결 + 장기 유지보수성 개선. 운영 DB 접근 정책 충돌을 사전 식별해 안정적 배포 달성.

    #kotlin#spring#spring-boot+3