Language/Java

Java - Hibernate는 무엇인가?

JaeHoney 2022. 4. 17. 13:06

JPA

하이버네이트(Hibernate)를 이해하기 전에 JPA를 알아야 합니다.

 

JPA는 Java Persistence API의 약자로 자바 ORM에 대한 표준 인터페이스입니다. 자바에서는 JPA를 인터페이스로 구현하고, JPA를 사용할 수 있는 구현체를 만들 수 있도록 설계했습니다.

 

JPA의 구현체로 대표적인 Framework로 Hibernate가 있습니다.

 

Hibernate

JPA는 기술 명세입니다. JPA만으로 구현체 없이 ORM을 사용하는 것은 불가능합니다.

 

하이버네이트(Hibernate)는 JPA의 대표적인 구현체입니다.

 

JPA의 핵심 인터페이스인 EntityManagerFactory, EntityManager, EntityTransaction를 Hibernate에서 각각을 상속하는 인터페이스를 만들어서 Impl로 구현하는 것을 확인할 수 있습니다.

 

아래의 그림은 JPA, Hibernate, JDBC API의 관계를 전반적으로 표현한 그림입니다.

 

Hiberate는 JPA스펙을 구현하고 Hibernate Native API도 추가로 제공하는 역할을 합니다. 그 밖에도 JPA의 구현체는 DataNucleus, EclipseLink 등 다양합니다.

 

SpringDataJPA를 사용하면 구조는 그림과 같이 됩니다.

 

 

감사합니다.

 


 

Reference1 - https://docs.jboss.org/hibernate/stable/orm/userguide/html_single/Hibernate_User_Guide.html
Reference2 - https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/