[JPA] JPA란? Spring Data JPA란? Hibernate란?

JPA(Java Persistent API)란?

JPA는 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 뜻한다. 

 

ORM 기술이란? 

ORM 기술은 말 그대로 객체와 관계형 데이터 베이스를 매핑해 주는 기술이다.
객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고, ORM 프레임워크가 중간에서 매핑을 해준다.

더 자세한 내용은 다음을 참고)

 

SQL Mapper 와 ORM 기술의 차이

Persistence Framework란? SQL Mapper와 ORM 기술에 대해 알아보기 전에 Persistence Framework에 대해 알아보자. 영속성(Persistence)은 프로그램이 종료되어도 데이터가 사라지지 않는 특성을 뜻한다. [그림 1]에서

code-lab1.tistory.com

 

JPA는 라이브러리가 아닌 ORM을 사용하기 위한 인터페이스의 모음이다.

 

이러한 JPA는 인터페이스의 모음, 단순한 명세이기 때문에 구현이 없다. 자바 애플리케이션에서 관계형 데이터베이스를 어떻게 사용할지 정의하는 하나의 방법일 뿐이다.

 

따라서 이러한 JPA의 구현체 있어야 JPA를 사용할 수 있다.

 

 

Hibernate란?

JPA 구현체들
[그림 1] JPA 구현체들

 

Hibernate는 JPA를 구현한 구현체이다. 개발된 지 10년이 넘었으며 대중적으로 많이 이용되는 JPA 구현체 중 하나이다.

 

JPA의 핵심들인 EntityManagerFactory, EntityManager, EntityTransaction 등을 상속받아 구현한다. 

 

JPA를 구현하는 다른 구현체들로는 EclipseLink나 DataNucleus 등이 있다.

 

만약 JPA를 구현하는 구현체들이 마음에 들지 않는다면 개발자가 직접 JPA 구현체를 만들어 사용할 수도 있다. 

 

Hibernate는 내부적으로 JDBC를 이용해 관계형 데이터베이스와 커넥션을 맺고 상호작용한다.

 

참고)

 

 

[Spring] JDBC(Java Database Connectivity)란? JDBC 드라이버란?

JDBC의 등장 배경 애플리케이션 서버에서 DB를 연결하기 위해선 어떤 동작이 필요할까? 1. 커넥션 연결 : 주로 TCP/IP를 사용해 애플리케이션 서버와 DB서버가 연결된다. 2. SQL 전달 : 애플리케이션 서

code-lab1.tistory.com

 

Spring Data JPA란?

Spring Data JPA
[그림 2] 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, Hibernate, Spring Data JPA
[그림 3] JPA, Hibernate, Spring Data JPA

 

정리하자면

 

JPA는 자바 진영의 ORM 기술에 대한 API 표준 명세이며

Hibernate는 JPA의 구현체이고, 내부적으로 JDBC를 이용한다.

Spring Data JPA는 JPA를 사용하기 쉽게 스프링에서 제공하는 모듈로 내부적으로 JPA 구현체를 이용한다.

 

 


참고

 

1. https://spring.io/projects/spring-data-jpa

 

반응형

댓글

Designed by JB FACTORY