기타/🚪 DB

JPA / Hibernate / Spring Data JPA의 관계 + MyBatis와 비교

둥굴둥굴둥굴레차 2021. 7. 13. 15:03

 

JPA / Hibernate / Spring Data JPA의 관계

 

 

 

 

JPA란?

Java Persistence API
  • ORM을 사용하기 위한 표준 인터페이스를 모아둔 것.
  • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스.
  • 주의할 것은 말 그대로 인터페이스지, 특정 기능을 수행하는 라이브러리가 아니라는 점.
    백엔드 API가 클라이언트가 어떻게 서버를 사용해야 하는지를 정의한 것처럼,
    JPA 역시 자바 어플리케이션에서 RDBMS를 어떻게 사용해야 하는지를 정의하는 한 방법일 뿐
  • 따라서 JPA는 단순한 명세이기 때문에 구현이 없다.
  • Hibernate개발자가 인터페이스 형식으로만든 것이 JPA다.

 

[참고] ORM이란?

 

[2021.07.13] ORM이란?

ORM이란? Object Relational Mapping (객체-관계 매핑) 우리가 OOP에서 쓰는 객체를 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 테이블의 관계를 바탕으로 자동으로 매핑(연결)하여 SQL문을 생성해..

pythontoomuchinformation.tistory.com

 

 

Hibernate란?

JPA라는 명세의 구현체
즉, 인터페이스를 직접 구현한 라이브러리
  • ORM툴 중 가장 많이 쓰인다.
  • JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계
  •  Java Persistence API를 참조하여 구현하는 기능을 제공
  • JPA의 구현체는 Hibernate외에도 많지만 대부분 Hibernate가 구현체로 사용된다.

 

 

Spring Data JPA

JPA를 더 쉽고 편하게 사용할 수 있도록 도와주는 모듈

이는 JPA를 한 단계 추상화시킨 Repository라는 인터페이스를 제공함으로써 이루어진다.

 

 


 

 

개발자는 조금 더 편리한 개발을 위해 JDBC에 무언가를 끼워 넣는다.

보통 Mybatis 혹은 JPA(Hibernate)이다.

 

이 둘을 비교해보자.

 

 

JPA와 Mybatis비교

 

JPA는 ORM, Mybatis는 SQL Mapper

 

 

JPA

객체와 DB간의 매핑을 위한 ORM

따라서 특별한 SQL없이도 DB와 연동된다.

설정을 통해 대부분의 작업을 자동화할 수 있다.

 

하지만 기술적 난이도가 Mybatis에 비해 높다.

 

 

MyBatis

영속성 프레임워크인 SQL Mapper

따라서 SQL코드를 작성하고 결과를 매핑하는 것도 직접 처리해줘야한다.

만약 테이블이 변경된다면 전체적으로 다시 수정해줘야 해서 번거롭다.

 

이를 사용하기 위해 요구되는 기술역량이 낮기 때문에 쉽게 접할 수 있고 학습용으로 사용된다.

그렇지만 매우 번거롭기 때문에 현장에서는 거의 사용되지 않는다.

 

 

 


 

🔽 Reference

 

[Spring JPA] ORM과 JPA 그리고 Hibernate

2020.03.06 수정 1. JPA ( Java Persistent API )와 ORM ( Object Relational Mapping ) JPA JPA란 자바 ORM 기술에 대한 API 표준 명세를 의미합니다. JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이며, J..

victorydntmd.tistory.com

 

JPA, Hibernate, 그리고 Spring Data JPA의 차이점

개요 Spring 프레임워크는 어플리케이션을 개발할 때 필요한 수많은 강력하고 편리한 기능을 제공해준다. 하지만 많은 기술이 존재하는 만큼 Spring 프레임워크를 처음 사용하는 사람이 Spring 프레

suhwan.dev