JPA / Hibernate / Spring Data JPA의 관계
JPA란?
Java Persistence API
- ORM을 사용하기 위한 표준 인터페이스를 모아둔 것.
- 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스.
- 주의할 것은 말 그대로 인터페이스지, 특정 기능을 수행하는 라이브러리가 아니라는 점.
백엔드 API가 클라이언트가 어떻게 서버를 사용해야 하는지를 정의한 것처럼,
JPA 역시 자바 어플리케이션에서 RDBMS를 어떻게 사용해야 하는지를 정의하는 한 방법일 뿐 - 따라서 JPA는 단순한 명세이기 때문에 구현이 없다.
- Hibernate개발자가 인터페이스 형식으로만든 것이 JPA다.
[참고] ORM이란?
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
'기타 > 🚪 DB' 카테고리의 다른 글
효율적인 테이블 설계 방법 (0) | 2021.10.18 |
---|---|
MySQL Workbench를 통해 EC2 DB사용하기 및 Spring Boot 세팅 (0) | 2021.08.12 |
MySQL/MariaDB # PRIMARY KEY, UNIQUE KEY, FOREIGN KEY (0) | 2021.07.30 |
MariaDB 컨테이너 비밀번호 바꿔주기 (0) | 2021.07.27 |
HeidiSQL설치 및 도커의 MariaDB characterset을 utf8mb4로 변경 (0) | 2021.07.22 |