Mybatis/MyBatis 소개 및 환경 설정

ORM과 MyBatis의 차이점

DEVLIB 2025. 4. 16. 16:40
728x90

ORM vs MyBatis: 핵심 개념 차이

구분
ORM (JPA, Hibernate) MyBatis
정의 객체와 관계형 데이터베이스 간의 매핑 자동화 SQL을 직접 작성하되, 객체와 결과 매핑을 자동화
SQL 제어 SQL을 프레임워크가 생성 SQL을 개발자가 직접 작성
학습 곡선 상대적으로 높음 비교적 낮음
자동화 정도 높은 추상화, 자동화 중심 개발자 중심의 수동 SQL 관리
유지보수 도메인 중심 개발에 적합 SQL 구조 변경이나 튜닝이 쉬움
트랜잭션 처리 선언적 처리 위주 직접 처리 또는 Spring 연동

비유로 쉽게 이해하기

  • ORM은 마법사
    “필요한 정보를 객체에 담아두면, 알아서 쿼리를 만들어서 처리해줄게!”
    → 단, 이 마법사는 고집도 세고 규칙도 많습니다. 
  • MyBatis는 비서
    “네가 쿼리를 주면 내가 그 쿼리 결과를 객체로 neatly 매핑해줄게!”
    → 주인의 SQL 능력에 따라 능력을 100% 발휘합니다. 

실무 관점에서의 장단점 비교

ORM(JPA/Hibernate)의 장점

  • 객체 중심 설계 가능 (도메인 주도 설계, DDD)
  • 코드 양이 줄어들고 생산성 향상
  • 복잡한 연관관계, 트랜잭션 관리에 강함

ORM의 단점

  • 자동 생성된 SQL의 구조와 성능 예측 어려움
  • N+1 문제, Lazy/Eager 로딩 이슈
  • 특정 쿼리 튜닝 시 제약이 많음

MyBatis의 장점

  • SQL을 직접 작성 → 튜닝 및 최적화 용이
  • DBMS에 종속적인 고급 기능 활용 가능
  • 기존 SQL 자산 재활용 가능

MyBatis의 단점

  • SQL 작성 및 매핑 관리가 번거로울 수 있음
  • 도메인 주도 설계와는 거리 있음
  • 대규모 프로젝트에서 중복 코드 발생 가능성

선택 기준 요약

상황 추천 프레임워크
SQL을 직접 튜닝하거나 복잡한 쿼리가 많은 경우 MyBatis
도메인 모델 중심의 아키텍처 설계가 필요한 경우 JPA (ORM)
초기 스타트업 / 단기 프로젝트 MyBatis (빠른 적용)
기업용 대형 프로젝트 상황에 따라 둘을 혼합해서 사용 (예: CQRS 패턴
LIST