MyBatis
XML이나 annotaion을 통하여 SQL문을 작성하고 객체들을 연결시키는 프레임워크이다.
// ✅ MyBatis 예시 (XML Mapper)
<select id="findUserById" parameterType="int" resultType="User">
SELECT * FROM users WHERE id = #{id}
</select>
MyBatis 특징
- SQL을 개발자가 직접 작성
- 복잡한 쿼리 로직에 유리
- XML 또는 어노테이션 기반 매핑
- DB에 최적화된 쿼리 튜닝 가능
장점
- 복잡한 SQL, JOIN, 서브쿼리, Stored Procedure 활용에 강함
- SQL이 명시적이라 로직 추적 및 디버깅 용이
- 특정 DB에 맞는 최적화 쿼리 작성 가능
단점
- SQL 작성 및 관리 부담
- 코드와 SQL이 분리돼 있어 유지보수 어려움
- 객체 지향적 개발에서 한계
JPA
Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음
// ✅ JPA 예시
User user = userRepository.findById(1L).orElse(null);
JPA 특징
- 객체 중심으로 데이터베이스 접근
- SQL을 자동 생성 및 실행
- ORM을 통한 객체-테이블 매핑
- 트랜잭션, 캐시, 지연로딩, 더티 체킹 등 풍부한 기능 제공
장점
- 생산성 높음 (SQL 작성 최소화)
- 유지보수 쉬움 (도메인 중심 개발 가능)
- DB 벤더 독립성 확보
- 1차 캐시, 지연로딩 등으로 성능 최적화
단점
- 복잡한 SQL 튜닝 어렵거나 비효율적일 수 있음
- JPA 동작 원리 학습 필요
- 잘못 쓰면 N+1 문제, 예상치 못한 쿼리 발생 가능
상황에 따른 프레임워크 추천
| 상황/요구사항 | 추천 프레임워크 |
| CRUD 중심, 생산성 우선 | JPA |
| 도메인 모델 중심 아키텍처 필요 | JPA |
| 복잡한 SQL, 다이나믹 쿼리 | MyBatis |
| 특정 DB에 최적화 필요 | MyBatis |
선택 기준 정리
- 초기 개발 속도 중요 → JPA
- SQL 주도 개발 선호 → MyBatis
- 복잡한 쿼리 비중 높음 → MyBatis
- 도메인 중심, 객체지향 아키텍처 중요 → JPA
📌 MyBatis vs JPA 핵심 정리
- MyBatis
- SQL을 직접 작성하고 세밀하게 제어 가능
- 복잡한 쿼리나 DB 성능 최적화에 강점
- SQL 관리와 유지보수 부담 존재
- JPA
- 객체 지향적 개발과 생산성 향상
- SQL 자동 생성, 코드와 DB 매핑 자동화
- 내부 동작 원리 숙지 필요, 예상치 못한 쿼리 발생 가능
👉 결론적으로, 프로젝트 특성에 맞는 선택이 중요합니다.
단순한 CRUD 위주라면 JPA가 생산성을 높여주고,
복잡한 쿼리나 DB 최적화가 필요한 경우 MyBatis가 더 적합합니다.
'개발자 면접 노트' 카테고리의 다른 글
| RDBMS에서 정규화란? (0) | 2025.06.26 |
|---|---|
| RESTful API 설계의 핵심 원칙 (0) | 2025.06.26 |
| HTTP 상태코드 (0) | 2025.06.25 |
| MVC 패턴 (0) | 2025.06.25 |
| Kotlin과 같은 등급은 Java인가 Spring인가? (3) | 2025.06.25 |