개발자 면접 노트

MyBatis vs JPA

해로몬 2025. 6. 26. 19:20

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