[Spring boot] MyBatis & JPA 정리

백준호·2022년 11월 9일
0

스프링 부트

목록 보기
9/9
post-thumbnail

MyBatis vs JPA

MyBatis와 JPA는 비슷하지만 다르다. MyBatis는 SQL Builder 또는 SQL Mapper의 한종류로 분류되고, JPA는 ORM기술로 분류되기 때문이다. SQL Mapper는 Object와 SQL의 필드를 매핑하여 데이터를 객체화 하는 기술을 뜻하고, ORM은 Object와 DB테이블을 매핑하여 데이터를 객체화하는 기술을 뜻한다.

데이터들이 프로그램이 프로그램 종료 후에도 특정한 장소에 저장되는 개념을 영속성(Persistence)이라 하는데, SQL Mapper와 ORM은 개발자가 직접 JDBC 매핑작업을 일일히 하지 않도록 기능제공하는 Persistence Framework다.

  • SQLMapper
    객체와 테이블 간의 관계를 매핑하는 것이 아니라 SQL문을 직접 작성하고 쿼리 수행 결과를 어떠한 객체에 매핑할지 바인딩 하는 방법이다. DBMS에 종속적이다.
  • ORM
    개발자가 반복적인 SQL을 직접 작성하지 않고, DBMS에 종속적이지 않다.
    복잡한 쿼리의 경우 JPQL을 사용하거나 SQL Mapper을 혼용하여 사용 가능하다.


## JPA(ORM)

Java ORM(object-relational mapping)기술에 대한 API 표준 명세
규현체로 Hibernate, EclipseLink, Data Nucleus가 있다

장점

  1. 쿼리작성작업이 없어 코드량이 줄어든다 (CRUD 메소드 기본제공)
  2. 객체중심 개발로 가독성이 좋다
  3. 유지보수와 리팩토링이 용이하다 (DTO수정 없이 객체만 수정)
  4. 동일한 쿼리에 대한 캐시기능, 쓰기지연, 변경감지, 지연로딩 등을 사용해 더욱 높은 성능을 낼 수 있다

단점

  1. 매핑 설계를 잘못했을 때 성능저하가 발생할 수 있다
  2. 복잡한 쿼리는 해결이 어렵다


MyBatis

자바에서 SQL Mapper를 지원해주는 프레임워크. SQL실행 결과를 자바빈즈 또는 MAP객체에 매핑해주는 Persistence 솔루션으로 관리. SQL을 소스가 아닌 XML로 분리.

장점

  1. 접근이 쉽고 코드가 간결.
  2. SQL문과 코드가 분리되어있어 수정이 용이
  3. 이식성이 뛰어남(다양한 프로그래밍 언어 구현가능)

단점

  1. 반복된 쿼리가 발생
  2. 데이터 변경시 로직도 수정해야함
  3. DB에 종속된 쿼리문 발생할 수 있음
  4. 스키마 변경시 SQL쿼리를 직접 수정(객체문과 쿼리를 모두 관리해야하고, CRUD메소드를 직접구현 해야함)
profile
남들이 다 아는 걸 모를 수는 없지!

0개의 댓글