DATABASE

JPA vs MyBatis 장단점? 차이?

DevS1K 2022. 12. 16. 05:13

JPA와 MyBatis의 장단점으로 차이를 알아보고자 한다.

 

JPA

JPA는 JAVA ORM(Object Relational Mapping) 기술에 대한 API 표준 명세이며 Spring Data JPA를 통해 사용한다.

DB 데이터와 Object와 매핑시킨다.

 

- 장점

   1. MySQL, MS-SQL, Oracle등 RDB에 종속적이지 않다.

      →  각 DB별 특정 쿼리를 작성할 필요없다.

   2. 쿼리를 직접 작성할 필요없고, 기본적인 CRUD을 제공하기 때문에 빠른 개발이 가능하다.

       (SQL문) Select * From User where Email= "~" → (Repository) findByEmail("~");

   3. 테이블이 변경되면 엔티티만 변경하면 되기 때문에 간편하게 수정을 할 수 있다.

 

- 단점

  1. 이해해야할 기술 내용들이 많아 학습하는데 오래 걸린다.

  2. 복잡한 쿼리문을 사용할 때 어려움이 있다.

      → JPQL, QueryDSL를 사용하면 직접 SQL문을 쓸 수 있다.

 

 

MyBatis

MyBatis는 SQL Mapper이고 SQL과 Object와 매핑을 시킨다.

 

- 장점

   1. JPA와 다르게 쉽고 SQL문을 직접 쓰기 때문에 복잡한 쿼리문에 능하다.

 

- 단점

   1. DB나 테이블이 변경되면 수정해야 하는 부분이 많다. 

        →  DB 변경 시 해당 DB에 맞는 로직으로 전체적인 수정이 필요하다.

   2. JPA와 다르게 상당히 많은 파일들과 설계하는데 복잡하다.

   3. 특정 데이터베이스에 종속되어 있다.

 

 

 

Mybatis과 JPA를 같은 로직으로 만들었을 때

기본 세팅으론 JPA가 엄청 간단했었고 Mybatis는 파일도 워낙 많고.. 그냥 모든게 복잡했다.

세팅 이후 JPA가 사용하기 편하고 프로젝트에서 작성 시간 효율이 뛰어났지만 어느부분에서 막히면 해결하는데 어려움이 있다. 특히 막히는 부분은 심화응용할 때 또 찾아보고 이해하고....!! 숙련하는데 오래걸린다. 이 부분에서는 확실히 Mybatis이 편했다.

 

하지만 JPA에서도 JPQL, QueryDSL로도 복잡한 쿼리를 지원하고 모든면이 우수하기 때문에 JPA를 우선으로 학습하는게 좋다고 본다!