[Spring] Mybatis, JPA, Hibernate 비교

lnnae·2020년 4월 9일
2

스프링 공부를 시작한지 꽤 되었다고 생각했는데 DB를 접근할 때 Mybatis밖에 써보지 않아서 항상 아쉬웠다. 그래서 꼭 hibernate를 써보고 싶은 로망이 있었다! (혼자하면 되는데 왜 안했지)
최근 친구의 제의로 새로운 프로젝트에 Spring 백엔드로 참가하기로 했다. 그 프로젝트에서 JPA를 사용한다고해서 공부할 겸 간단히 비교 및 사용법을 익히려고 한다.
드디어 JPA 공부합니다🤞


들어가기 전에 알고가면 좋은 것

SQL Mapper

SQL Mapper는 직접 SQL문을 작성해 DB를 접근하는 것이다.
Mybatis가 SQL Mapper에 해당한다.

ORM (Object Relational Mapping)

DB의 데이터를 객체로 매핑시켜 데이터를 접근할 수 있는 것이다.
ORM을 사용하면 SQL을 작성하지 않고도 메소드를 사용해 데이터를 조작할 수 있다.
JPA, Hibernate 등이 해당한다.


Mybatis

Java에서는 DB에 접근할 수 있도록 JDBC라는 라이브러리를 제공한다.
JDBC는 학습이 쉬워서 처음 DB 접근을 배울 때 자주 사용된다.
그렇지만 사용할 때마다 Connection을 생성해줘야 하고, 중복되는 코드가 많아 실제 개발에는 잘 안쓰이는 느낌이다.

이 JDBC를 사용하기 쉽게 만들어주는 것이 Mybatis이다.
아까 말했듯, SQL Mapper에 해당한다. JDBC로 처리하는 부분의 일부를 코드와 파라미터 설정으로 매핑을 대신 해준다.

장점
+ 학습이 쉽다.
+ 소스코드와 sql을 분리할 수 있다.

단점
+ 반복적인 작업이 반복된다.

JPA (Java Persistent API)

Java ORM 기술에 대한 API 표준 명세로, 이것 또한 Java에서 제공하는 API이다.
사용할 때 JPA, Spring Data JPA, Hibernate를 혼동하기 쉽다.

  • JPA는 자바 어플리케이션에서 RDBMS를 사용하는 방식을 정의한 인터페이스이다.
    라이브러리가 아님! -> 구현이 없다.
  • Spring Data JPA는 JPA를 쓰기 좋게 만들어놓은 모듈이다.
    JPA interface를 구현해 Repository라는 인터페이스를 제공한다.
  • Hibernate는 JPA의 구현체이다.
장점
+ CRUD 쿼리를 자동으로 생성해준다.
+ Entity에 속성만 추가해준다면 쿼리를 건들 필요가 없다.

단점
+ 상대적으로 학습이 어렵다.
+ 복잡한 쿼리 작성이 어렵다고 한다.

결론 👀

반복을 줄이고 객체지향적 설계를 위해서는 JPA를 사용하는 것이 JAVA에 조금 더 걸맞는 사용이라고 생각한다. Mybatis는 학습이 쉬우니 자주 사용하게 되는 것이고!

profile
이내임니당 :>

0개의 댓글