[JPA] JPA란? Spring Data JPA란? Hibernate란?
- Back-End/[JPA]
- 2023. 1. 17.
JPA(Java Persistent API)란?
JPA는 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 뜻한다.
ORM 기술이란?
ORM 기술은 말 그대로 객체와 관계형 데이터 베이스를 매핑해 주는 기술이다.
객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고, ORM 프레임워크가 중간에서 매핑을 해준다.
더 자세한 내용은 다음을 참고)
JPA는 라이브러리가 아닌 ORM을 사용하기 위한 인터페이스의 모음이다.
이러한 JPA는 인터페이스의 모음, 단순한 명세이기 때문에 구현이 없다. 자바 애플리케이션에서 관계형 데이터베이스를 어떻게 사용할지 정의하는 하나의 방법일 뿐이다.
따라서 이러한 JPA의 구현체 있어야 JPA를 사용할 수 있다.
Hibernate란?
Hibernate는 JPA를 구현한 구현체이다. 개발된 지 10년이 넘었으며 대중적으로 많이 이용되는 JPA 구현체 중 하나이다.
JPA의 핵심들인 EntityManagerFactory, EntityManager, EntityTransaction 등을 상속받아 구현한다.
JPA를 구현하는 다른 구현체들로는 EclipseLink나 DataNucleus 등이 있다.
만약 JPA를 구현하는 구현체들이 마음에 들지 않는다면 개발자가 직접 JPA 구현체를 만들어 사용할 수도 있다.
Hibernate는 내부적으로 JDBC를 이용해 관계형 데이터베이스와 커넥션을 맺고 상호작용한다.
참고)
Spring Data JPA란?
Spring Data JPA는 JPA를 사용하기 편하도록 만들어놓은 모듈이다.
Spring Data JPA는 JPA를 한 단계 더 추상화시킨 Repository 인터페이스를 제공한다.
이러한 Spring Data JPA는 Hibernate와 같은 JPA구현체를 사용해서 JPA를 사용하게 된다.
Spring Data JPA를 사용하면 사용자는 더욱 간단하게 데이터 접근이 가능해진다.
Spring Data JPA를 사용하는 방법이나, 더 자세한 내용은 다음에 다뤄보도록 하겠다.
정리
정리하자면
JPA는 자바 진영의 ORM 기술에 대한 API 표준 명세이며
Hibernate는 JPA의 구현체이고, 내부적으로 JDBC를 이용한다.
Spring Data JPA는 JPA를 사용하기 쉽게 스프링에서 제공하는 모듈로 내부적으로 JPA 구현체를 이용한다.
참고
1. https://spring.io/projects/spring-data-jpa
'Back-End > [JPA]' 카테고리의 다른 글
[JPA] 엔티티 매핑, 필드 컬럼 매핑, 기본키 매핑, @Entity, @Table, @Column, @Id (0) | 2023.02.07 |
---|---|
[JPA] 영속성 컨텍스트란? (0) | 2023.02.02 |