한국통계정보원 (2024년 ○월 ~ ○월 인턴)
기존의 MyBatis XML 기반 쿼리와 VO는 다음과 같은 문제를 안고 있었습니다:
TnSttblBssVo가 Entity와 DTO 역할을 혼용하고 있어 단일 책임 원칙(SRP)을 위배함
/** 분류수 */
private int statClsCnt;
/** 항목수 */
private int statItmCnt;
/** 통계표 분류/항목 목록 */
private List<TnSttblClsVo> sttblClsLst;
/** 통계표 분류/항목 목록 */
private List<TnSttblItmVo> sttblItmLst;
통계표와 관계를 가지는 기관(Org), 통계(Statistics) 정보가 단순히 ID만 포함되어 있어 도메인 관계 표현이 부족
쿼리는 resultType만 사용하여 복합 구조 매핑이 불가능
전체 구조를 바꾸기 어려운 상황에서 최소한의 변경으로 도메인 관계를 명시적으로 표현하기 위해, 다음과 같은 리팩토링을 수행했습니다:
기존
private String orgId;
private String statisticsId;
개선 후
private TnOrgVo tnOrgVo;
private TnStatisticsVo tnStatisticsVo;
→ 더 이상 orgId, statisticsId는 단순 문자열이 아니라, 연관된 도메인 객체로 명시