SpringBoot

[SpringBoot] Mybatis vs JPA

HU_717 2024. 12. 13. 23:03

Mybatis

  • SQL Mapper 기술 제공
  • JDBC 프로그래밍을 단순화하여, 불필요한 Boilerplate 코드 제거하고, Java 소스 코드에서 SQL 문을 분리하여 별도의 XML 저장하고, 이 둘을 서로 연결시켜주는 기능 제공

Mybatis 특징

  • MyBatis 내부에서 Boilerplate 코드가 구현되어 있으며, Java메소드와 SQL간 매핑을 해줌
  • SQL문을 Java 코드에서 분리하여 관리가 편함(분리된 SQL문을 MyBatis가 찾아서 실행)
  • 동적인 SQL 생성 기능을 제공하여 파라미터에 따라 다른 SQL문 동적 생성 가능

MyBatis 장단점

  • 장점 : SQL직접 제어, 학습 용이성
  • 단점 : CRUD 단순 작업에 반복 수작업 필요, 데이터베이스에 종속적

JPA

  • ORM 기술 제공(개발자가 객체 지향 프로그래밍 언어에서 사용하는 객체 모델과 관계형 데이터베이스 테이블 간의 매핑으로 자동으로 처리)
  • Java 객체와 관계형 데이터베이스 간의 매핑을 위한 API
  • Java 개발자가 객체지향 관점에서 개발할 수 있도록 하여 DB와 Java간의 불일치 해소

JPA 특징

  • MyBatis와 다르게 SQL 문의 작성이 불필요하며 ORM 내부적으로 java메소드에 적합한 SQL문이 자동으로 생성되어 실행
  • 개발자는 클래스만 만들어서 사용하며, ORM프레임워크(대표적으로 hiberate)가 자동으로 관련된 SQL생성

JPA 장단점

  • 장점 : 표준화된 인터페이스(JPA 표준을 따름), 자동 매핑으로 개발 및 유지보수성 향상, 객체 지향적인 접근(테이블 간의 연관관계와 객체간 연관 관계 쉽게 다룰 수 있음), DBMS에 독립적
  • 단점 : 높은 학습곡선, 복잡한 SQL생성 어려움