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