피드로 돌아가기
Create condition using JooqTemplate
Dev.toDev.to
Database

jOOQ 기반 가변 인자 추상화로 동적 쿼리 작성 복잡도 제거

Create condition using JooqTemplate

ts54322026년 6월 16일2intermediate

Context

반복적인 SQL 조건절 생성으로 인한 보일러플레이트 코드 증가와 쿼리 작성 생산성 저하 발생. 필드명, 연산자, 값을 매번 개별 설정해야 하는 jOOQ 기본 API의 번거로움 해결 필요.

Technical Solution

  • Field, Operator, Value를 결합한 condition 메서드로 단일 조건 생성 로직 추상화
  • Varargs 기반의 conditions 메서드를 구현하여 필드-값 쌍의 리스트를 List<Condition>으로 자동 파싱
  • 필드명 뒤에 특수 접미사(%, >, >= 등)를 붙여 SQL 연산자를 결정하는 DSL 패턴 도입
  • isnotnull, notin 등 단일 인자 처리가 필요한 Unary Operator를 콜론(:) 구분자로 설계
  • orderBy 설정을 위해 필드명에 정렬 옵션을 결합한 문자열 기반 정렬 지정 방식 구현

1. 반복되는 동적 필터링 로직을 위해 가변 인자 기반의 Wrapper 클래스 도입 검토

2. 문자열 접미사를 활용한 연산자 맵핑으로 쿼리 작성 코드의 가독성 및 밀도 향상

3. 정렬 조건과 필터 조건을 분리하여 처리하는 Query Interface 설계 적용

원문 읽기