[Spring Data JPA] VS [MyBatis]

윤경·2021년 11월 26일
0

JPA

목록 보기
20/22

이전에는 MyBatis가 뭔지 알아보았다.

Java를 이용해 DB를 사용하기 위해서는 JDBC 라이브러리를 이용하는 것이 필수인데 실무에서는 JDBC를 이용해 직접 프로그래밍하지 않는다.

대부분 더 편리하게 사용하기 위해 JDBC에 무언가를 더해 사용하는데 그게 바로 MyBatis 또는 JPA(이전의 Hibernate)이다.

그렇다면 뭘 사용해야 할까?

MyBatis

MyBatis는 SQL-Mapping을 사용하는 영속성 DB저장 프레임워크이다.
이것은 개발자가 Native SQL코드를 작성하고 결과를 객체와 매핑하는 것까지 직접 처리해야 한다.
(쿼리문을 직접 짜야함)

완벽히 매핑되지 못했다면 테이블이 변경되고 DTO가 변경될 때마다 매핑에 대한 부분을 수정해야 한다는 단점이 있다.

SQL만 알면 쉽게 접할 수 있다는 장점이 있는 반면 할 일이 많아진다는 단점이 있다.

JPA(Hibernate)

JPA는 Java Persistence API의 약자로 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. (라이브러리가 아니다)
객체(Object)와 DB(Relational Database)간의 매핑을 위한 프레임워크로 Native SQL 없이도 객체와 DB가 연동된다.
(쿼리문을 직접 작성하지 않고 메소드 호출만으로도 CRUD 구현 가능)

HibernateJPA(인터페이스)라는 명세의 구현체이다.

SpringData JPAJPA를 쓰기 편하게 만들어놓은 모듈이다.
Spring에서 제공하는 모듈 중 하나로, JPA를 한 단계 추상화시킨 Repository 라는 인터페이스를 제공함으로써 이루어진다.
Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면 Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어 Bean으로 등록해준다.

JPA, Hibernate, SpringData JPA의 관계

출처

결국 정리하자면 SpringData JPA는 JPA를 쉽게 사용하기 위해 스프링에서 제공하는 프레임워크라고 할 수 있는데 Hivernate와의 큰 차이가 없다고 하지만 (1) 구현체 교체의 용이성, (2) 저장소 교체의 용이성 때문에 SpringData JPA를 사용하는 것이 좋다고 한다.

(아니면 JPA와 MyBatis를 혼용하는 방법도 있다. 참고)

✔️ 기존 JPA 과정
ControllerServiceRepository(JpaRepository 상속 인터페이스)

✔️ Mapper 이용 과정
ControllerServiceMapper(인터페이스) → xml(SQL MapXML)

profile
개발 바보 이사 중

0개의 댓글