피드로 돌아가기
Dev.toBackend
원문 읽기
MyBatis XML 제거를 통한 일일 1M 요청 처리 CRUD 구조 최적화
Production CRUD in Java Without the Framework Tax
AI 요약
Context
MyBatis 사용 시 XML 기반의 동적 쿼리 관리가 복잡해짐에 따라 발생하는 Tag Soup 현상과 파일 분산으로 인한 생산성 저하 발생. 쿼리 하나를 위해 다수의 파일과 언어를 교차 확인해야 하는 구조적 병목 지점 식별.
Technical Solution
- SQL-First 접근 방식을 통한 프레임워크 오버헤드 최소화 설계
- BaseDao 제네릭 클래스 상속을 통한 공통 CRUD 메서드 구현으로 중복 코드 제거
- BaseCondition 클래스의 addCondition 메서드를 통한 런타임 동적 쿼리 생성 로직 구축
- Parameter Null-checking 기반의 조건부 쿼리 추가 방식으로 XML if 태그 대체
- Audit Field 및 Soft-delete 처리를 위한 자동화 필드 관리 레이어 통합
- SQL 투명성 확보를 위해 Proxy 기반 변환을 배제한 Thin Bridge 구조 채택
실천 포인트
1. 단순 CRUD 비중이 높은 서비스에서 XML/Annotation 기반 쿼리 관리 비용 분석
2. Audit Field(생성/수정일 등)의 공통 처리 로직 자동화 가능 여부 검토
3. Type-safety보다 쿼리 가독성과 직관적 제어가 우선인 도메인인지 판단
4. 동적 쿼리 생성 시 Null-safe한 Condition Builder 패턴 도입 고려