Mybatis, JPA - DB 접근 기술에 대한 생각

Socra·2026년 7월 25일

회사의 개발 환경과 기술은 내가 그동안 개발을 해왔던 개발 환경과는 많이 달랐다.

DB 접근 기술으로는 내가 주로 사용했던 JPA 가 아니라 Mybatis 를 쓰고 있었다.


둘 다 사용해 본 경험이 있지만, 개인 프로젝트에서는 JPA를 더 자주 사용했던 것 같다.

Spring Boot 를 학습하는 과정에서도 JPA 를 중심으로 다루는 자료가 많았고,
자연스럽게 JPA 를 접할 기회가 더 많았다.


두 기술은 우열을 가릴 대상이라기보다 철학과 장점이 다른 기술이라고 생각한다.

예전에 이 둘을 자동차에 비유한 이야기를 들은 적이 있다.

JPA 는 테슬라, MyBatis 는 그랜저와 같다는 비유였다.

대중의 관심은 테슬라에 더 쏠리지만, 실제 도로에서는 그랜저를 훨씬 자주 볼 수 있는 것처럼,
개발 커뮤니티에서는 JPA 가 많이 언급되지만 기업 현장에서는 여전히 MyBatis 를 사용하는 곳도 많다는 의미였다.


JPA 는 ORM이 많은 동작을 추상화해 개발 생산성을 높여 준다.
반면, 영속성 컨텍스트, 지연 로딩, N+1 문제, 변경 감지 등 내부 동작을 제대로 이해해야 하는 부분도 많다.
이러한 개념을 이해하고 활용하면 JPA의 장점을 충분히 누릴 수 있지만, 학습 비용이 높은 편이라는 점도 느꼈다.

최근에는 Entity와 도메인 모델을 분리하는 아키텍처도 많이 이야기된다.
이렇게 설계하면 비즈니스 로직이 특정 DB 접근 기술에 덜 의존하게 되어
JPAMyBatis 를 상황에 맞게 선택하거나 교체하기도 쉬워진다.


우리 회사의 경우에는 데이터 조회와 SQL이 중요한 업무가 많고, 도메인 자체도 데이터 중심으로 구성되어 있다. 이런 환경에서는 SQL을 직접 제어하기 쉬운 MyBatis 가 더 적합한 선택이라는 생각이 들었다.

0개의 댓글