MyBatis와 JPA를 알아보자

김진회·2022년 11월 23일
0

jpa

목록 보기
3/5

1. MyBatis

자바에서 SQL Mapper를 지원해주는 프레임워크로 ObjectSQL 필드를 매핑하여 데이터를 객체화 하는 Object Mapping 기술이다. SQL문을 작성하여 RDB에 접근하고 데이터를 객체화 한다.

  • 특징 및 장점
    • 복잡한 쿼리나 동적 쿼리에 강함
    • 프로그램 코드와 SQl 쿼리의 분리로 간결성, 생산성 및 유지보수성 향상
    • 조회결과를 DTO 등으로 맵핑해서 사용 할 수 있다.
    • 다양한 언어로 구현할 수 있다.
  • 단점
    • SQL 쿼리를 직접 수정하고 관리해야 한다.
    • 반복된 쿼리가 발생해 반복 작업이 있을 수 있다.
    • 런타임시에 오류를 확인할 수 있다.
    • 특정 DB에 종속적이다.

2. JPA (Java Persistence API)

자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음이다. 즉, 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다.
* ORM(Object-Relational Mapping) : 객체와 DB테이블을 매핑하여 데이터를 객체화하는 기술. DBMS에 종속적이지 않다.

  • 특징 및 장점
    • CRUD 메소드를 기본 제공한다. 즉, 단순 쿼리를 작성하지 않아도 된다. 👉 생산성 향상
    • 1차 캐싱, 쓰기 지연, 변경 감지, 지연로딩 제공
    • 컴파일 타임에 오류를 확인할 수 있다.
    • DB에 종속적이지 않다.
    • 쿼리를 수정안하고 객체만 수정해주면 된다. 즉, 객체 중심으로 개발할 수 있다.
  • 단점
    • 단순 JPA만으로는 복잡한 쿼리를 만들기 어렵다.
    • N+1문제 등의 이슈가 발생할 수 있다.
    • 서비스가 고도화된다면 학습할 내용이 많아져 그만큼 학습 비용이 발생한다.

3. MyBatis vs JPA

위 특징을 파악하면 여러 차이점을 알 수 있다.

특징MyBatisJPA
DB종속적비종속적
쿼리직접구현일부 자동구현
복잡쿼리강함약함
오류확인런타임컴파일타임
쿼리수정수동자동
언어다양한 언어자바
...

동아시아권의 MyBatis

글의 상단 그래프를 보면 동아시아권은 mybatis를 많이 사용한다. 그 이유는 동아시아권의 이전 개발은 객체 모델링보다 데이터 중심 모델링을 우선시했기 때문이다.
또한, 우리나라 시장은 대부분이 SI, 금융 시장이었기 때문이다.

SI와 금융권의 비니지스는 매우 복잡하다. 안정성과 속도를 중요시하기 때문에 mybatis를 채택한 것으로 보인다. JPA의 러닝 커브가 높은 이유도 있다.


마치며

각각 장단점이 있으니 특징을 파악해서 쓰도록 하고 둘을 혼용해서 쓰거나 다른 라이브러리를 잘 이용하도록 하자!

profile
SSAFY 7기. HMG. 협업, 소통, 사용자중심

0개의 댓글