* 주로 전자정부 표준 프레임워크를 사용하는 입장에서 비교 대상은 전자정부 표준 내를 기준으로 한다.
전자정부 표준 프레임워크(eGovFrame) 환경에서 Spring Data JPA(JpaRepository)와 MyBatis를 비교할 때, 가장 중요한 관점은 "공공사업(SI)의 특성"과 "프레임워크 버전(3.x vs 4.x/5.0)"입니다.
전자정부 프레임워크 4.x 버전부터 Spring Boot가 본격적으로 도입되면서 JPA 사용률이 늘고 있지만, 여전히 공공사업에서는 MyBatis가 주류를 이룹니다. 이 두 기술의 장단점을 전자정부 표준 프레임워크 관점에서 명확하게 비교해 드리겠습니다.
1. 한눈에 보는 요약 비교
| 비교 항목 | Spring Data JPA (JpaRepository) | MyBatis |
| 패러다임 | ORM (객체와 DB 테이블 매핑) | SQL Mapper (자바 코드와 SQL 매핑) |
| 전자정부 표준 적합성 | 4.x(Spring Boot 기반) 이상에서 강력 추천 | iBatis 시절부터 이어져 온 공공 표준 (가장 친숙함) |
| 생산성 | 매우 높음 (간단한 CRUD는 SQL 작성 없음) | 보통 (CRUD도 XML에 일일이 쿼리 작성 필요) |
| 통계 및 복잡한 쿼리 | Querydsl 등 추가 설정 필요 (학습 곡선 높음) | 매우 유리 (XML 안에서 Dynamic SQL 완벽 제어) |
| 인력 수급 (SI 관점) | 상대적으로 어려움 (고급 인력 필요) | 매우 쉬움 (대부분의 프리랜서/초급 개발자 가능) |
2. Spring Data JPA (JpaRepository)
장점 (Pros)
- 압도적인 CRUD 생산성 및 유지보수성 공공 데이터의 단순 테이블 관리, 마스터 성격의 데이터 등록/수정/삭제 시 save(), findById() 만으로 해결됩니다. 전자정부 공통 컴포넌트나 단순 가공 기능 개발 시 속도가 배로 빨라집니다.
- DBMS 종속성 탈피 공공 사업 특성상 오라클(Oracle), 티베로(Tibero), 큐브리드(Cubrid), 포스트그레SQL(PostgreSQL) 등 다양한 DBMS가 제안서에 따라 바뀝니다. JPA는 방언(Dialect) 설정만 바꾸면 쿼리를 자동 수정해주므로 DBMS 마이그레이션이 매우 매끄럽습니다.
- 전자정부 4.x / 5.0 아키텍처와의 궁합 최신 전자정부 프레임워크는 Spring Boot를 기본 실행환경으로 채택하고 있습니다. Boot 환경에서 JpaRepository는 설정이 극도로 단순하며 표준 아키텍처에 잘 맞물립니다.
단점 (Cons)
- SI 시장의 인력 수급 문제 (가장 큰 걸림돌) 공공 사업은 단기간에 많은 개발자를 투입해야 하는 경우가 많습니다. JPA의 영속성 컨텍스트, 지연 로딩(Lazy Loading) 개념을 정확히 모르고 쓰면 성능 장애(N+1 문제)나 데이터 미반영 오류가 발생하기 쉬워 인력 관리가 어렵습니다.
- 공공 표준 대용량 통계/배치 쿼리의 한계 공공 시스템 특성상 수십 개의 테이블을 조인하거나 화면 하나에 수백 줄짜리 복잡한 통계 쿼리가 들어가는 경우가 많습니다. JpaRepository만으로는 이를 표현하기 어렵고, 결국 Querydsl 같은 추가 라이브러리를 도입하거나 Native Query를 써야 해서 빛이 바랩니다.
3. MyBatis
장점 (Pros)
- 공공 SI 시장에서의 "압도적인 익숙함" 과거 iBatis 시절부터 전자정부 표준 프레임워크의 기본 데이터 접근 기술이었습니다. 웬만한 공공 SI 개발자(초급~고급, 프리랜서 포함) 중 MyBatis를 다루지 못하는 사람은 없으므로 인력 수급과 리스크 관리에 절대적으로 유리합니다.
- 복잡한 SQL 및 튜닝의 용이성 정부 기관의 데이터 모델은 복잡하게 얽혀있는 경우가 많습니다. SQL을 직접 XML에 작성하기 때문에, DBA가 준 튜닝된 쿼리나 힌트(Hint)절을 그대로 복사·붙여넣기 하여 적용하기 매우 좋습니다.
- 동적 쿼리(Dynamic SQL)의 직관성 <if>, <choose>, <foreach> 등 XML 태그를 이용해 검색 조건에 따라 동적으로 변하는 쿼리를 작성하는 것이 매우 직관적이고 강력합니다.
단점 (Cons)
- 반복적인 단순 작업 (Boilerplate Code) 테이블 하나를 새로 만들 때마다 VO(DTO), Mapper 인터페이스, Mapper XML을 만들고 Insert, Update, Delete, Select 쿼리를 일일이 다 짜야 합니다. 단순 CRUD가 수백 개 레이어로 존재하는 대형 시스템에서는 이 작업 자체가 큰 낭비가 됩니다.
- DBMS 변경 시 수정 지옥 만약 국산 DBMS(예: Tibero)나 오픈소스(예: PostgreSQL)로 전환하게 될 경우, 오라클 전용 함수(NVL, DECODE, SYSDATE 등)나 페이징 처리 쿼리를 XML 파일마다 찾아다니며 직접 사람이 수정해야 합니다.
4. 최종 결론 및 추천 (전자정부 프레임워크 기준)
공공 사업의 예산, 기간, 투입 인력의 수준을 고려하여 선택해야 합니다.
- MyBatis를 선택해야 하는 경우:
- 투입되는 개발자 층이 다양하고 단기 프리랜서 비중이 높은 경우
- 통계, 정산, 대용량 일괄 배치(Batch) 등 복잡한 SQL 중심의 시스템인 경우
- 기존에 구축된 전자정부 3.x 버전 기반의 시스템을 고도화/유지보수 하는 경우
- Spring Data JPA를 선택해야 하는 경우:
- 최신 전자정부 4.x 이상 + Spring Boot 환경에서 신규 구축(MSA 등)하는 경우
- 비즈니스 로직이 복잡하고, 단순 CRUD 및 데이터 검증(Validation)이 많은 대내 시스템인 경우
- 추후 DBMS가 변경될 가능성이 제안서에 명시되어 있는 경우
💡 현업의 절충안 (하이브리드) 요즘 고도화되는 공공 프로젝트에서는 **기본적인 단건 조회 및 C·U·D 처리는 Spring Data JPA**로 묶어 생산성을 높이고, **복잡한 통계 화면이나 조인이 많이 걸리는 대용량 조회는 MyBatis**나 Querydsl로 이원화하여 개발하는 아키텍처를 많이 채택합니다.
'Spring boot' 카테고리의 다른 글
| JpaRepository (0) | 2026.06.24 |
|---|