필자가 한참 취준생으로 바빴던 시절, 취업공고로 자주 걸려있던 문구가 있다.
필수 기술: Mybatis
그 당시에 JPA만 사용해봤던 나였기에 머리위로 물음표가 떠올랐다.
Mybatis가 뭔데?
지금이야 Mybatis를 다루는 회사를 다니고 있기도 하고 여러번 만져봤기에 익숙해지긴 했지만 그 당시에는 미숙했다.
JPA에 대한 감각이 무뎌지고 있기도하고 과거의 무지함에 대한 반성에 대한 의미로 Mybatis와 JPA의 개념에 대해 다시한번 확고히 짚고 넘어가려고한다.
Mybatis, JPA가 무엇이냐!
데이터 베이스 접근 계층을 구축해주는 프레임워크다.
즉, 자바 프로그램과 데이터베이스 사이를 이어주는 다리 역할을 수행한다.
Mybatis와 JPA의 본질적인 기능은 완전히 동일하지만, 데이터를 어떻게 바라보는지에 대해 차이점이 분명히 존재한다.
Mybatis는 mapper를 통해 직접적인 쿼리를 짜고, DAO를 통해 연결하며 IF와 IMPL을 통해 서비스를 구축한다.
즉, 개발자가 모든 경로를 직접적으로 연결시킬 수 있다.
그에 비해 JPA는 Entity라는 자바객체를 통해 껍데기를 만들고, Repository를 통해 만들어낸 Entity를 데이터베이스에 연결한다.
쿼리 자체를 커스텀마이징할 수 있긴하지만, 대부분의 경로(쿼리)는 자동으로 생성되며, 사용자는 생성된 기능을 서비스에서 사용만 하면 된다.
즉, 개발자가 쿼리에 얼마나 관여를 하냐가 JPA와 Mybatis를 가르는 큰 차이점이라고 볼 수 있다.
자동으로 생성되는 JPA가 현대식이고, 쿼리를 개발자가 전부 신경써줘야하는 Mybatis는 너무 구시대적이지 않냐고 생각할수도 있는데, 전혀 그렇지 않다.
대규모의 쿼리를 다루거나, 성능 최적화에 대해 신경쓰는 등 개발자가 직접적으로 데이터베이스에 영향을 끼칠 필요가 있는 시스템에는 Mybatis가 어울리고, 데이터구조가 빠르게 바뀌거나 기능을 빠르게 만들어내는 등 속도가 중요한곳에서는 JPA가 훨씬 유리하다.
둘 다 나쁘지 않는 프레임워크지만, 사용하는 방법이 다르고 상황에 맞게 어울리는 프레임워크를 사용해야한다.
'자바 스프링' 카테고리의 다른 글
| 의존성주입 구현 (0) | 2025.12.03 |
|---|---|
| Lombok 생성자 생성안됨 문제 (0) | 2025.02.12 |
| java.lang.IllegalArgumentException: The Unicode character at code point [49,548] cannot be encoded as it is outside the permitted range of 0 to 255 (0) | 2025.02.08 |
| 타임리프 @RequestParm 값 넘겨주기 문제 (0) | 2025.02.08 |
| 자바 스프링으로 크롤링 해보기 (0) | 2024.09.10 |