Posts [JPA] JPA vs Hibernate
Post
Cancel

[JPA] JPA vs Hibernate

JPA vs Hibernate

image

  • JPA(Java Persistence API): 구현물이 없는 인터페이스
  • Hibernate: JPA의 구현체
  • JPA만 가지고는 프로그래밍할 순 없고 Hibernate, EclipseLink, DataNucleus와 같은 구현체를 가지고 사용해야한다.
    스크린샷 2021-04-01 오후 1 21 36

  • SessionFactory(Hibernate): JPA에 정의된 EntityManager Factory를 상속 받은 인터페이스이고 이를 실제 구현한게 SessionFactoryImplementation 클래스
  • Session(Hibernate): JPA에 정의된 Entity Manager를 상속하고 있고 이를 실제 구현한게 SessionImpl클래스

Library

1) Java-persistence-api

1
2
3
4
5
<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>

2) hibernate-core

  • hibernate-core만 추가해도 의존하는 Java-persistence-api도 같이 다운 받게됨
1
2
3
4
5
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.10.Final</version>
</dependency>

활용 방법

1) JPA + JPA Provider(Hibernate)

  • 애플리케이션이 JPA를 사용해서 jdbc를 호출해서 사용하는 방법
  • 장점은 hibernate를 사용하다 EclipseLink, DataNucleus와 같은 다른 구현체로 쉽게 바꿀 수 있음(호환성이 뛰어남)

2) only Hibernate

  • 애플리케이션이 JPA를 거치지 않고 바로 hibernate를 사용해서 jdbc를 호출해서 사용하는 방법
  • 장점은 hibernate가 JPA의 인터페이스를 구현한거 외에 자체적으로 존재하는 native 구현체들을 사용할 수 있다.(JPA외에도 추가적인 특징을 사용 가능하다)
  • 사용하는 목적에 따라 적절하게 활용하면 됨
This post is licensed under CC BY 4.0 by the author.