본문 바로가기

Backend/Spring

MyBatis vs JPA 차이, 사용후기, 장단점

MyBatis

SQL 중심 개발

 

장점

  • 겁내 쉬워요.
  • SQL의 강점과 특징을 그대로 쉽게 활용할 수 있음
  • 어떤 시스템이든 무난하게 평균 효율을 낼 수 있음

단점

  • SQL을 직접 작성하여 반복되는 작업이 존재
  • SQL로 모든 문제의 해결을 쉽게 할 수 있어서 테이블 설계에 소홀해지는 경우가 많음

JPA

Object 중심 개발

 

장점

  • DBMS 벤더에 종속되지 않도록 개발 가능
  • 기본적인 CRUD 쿼리를 반복적으로 작성하지 않아도 됨
  • 수정사항이 발생하였을 때 수정해야 할 코드가 적음
  • 빌드 과정에서 오류 발생
  • Type-Safe

단점

  • 겁내 어려워요.
  • 복잡한 쿼리를 사용해야 할 때에 불리, 복잡한 쿼리를 지양하며 꼭 필요한 경우 Querydsl이나 jOOQ와 같은 라이브러리 사용을 권장

JPA 사용하면 불리한 경우

  • 이미 설계된 DB를 사용하는 프로젝트 (우수하게 설계되지 않은)

JPA는 특정 경우를 제외하면 대부분의 측면에서 MyBatis보다 높은 효율을 낼 수 있다고 봅니다.

다만, 러닝 커브가 상당한 수준이라 Java와 SQL에 익숙하더라도 JPA를 모르면 많은 숙련이 필요해요.

튜토리얼 조금 겪고 와 괜찮네?라고 생각하고 실제 프로젝트에 도입한다면 지옥을 맛보게 될거에요.

적어도 몇 달은 꾸준히 숙달해야 장점을 제대로 느낄 수 있는 것 같네요.

제가 멍청한 걸수도...

태그