JPA, Hibernate, Spring Data JPA
JPA공부를 시작함에 있어서 가장헷갈렸던 부분이 JPA와 Hibernate와의 관계였다.
동영상강의에서는 처음에 EntityManager를 활용하여 Data를 삭제 저장 업데이트를 하지만, 실제 실무에서는 EntityManager를 사용하지 않고 Repository 인터페이스 만을 이용해서 JPA를 사용한다.
간단하게 이 세가지에 대해 알아보면
JPA
기술 명세
JPA(Java Persistence API)는 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
javax.persistance
단순히 인터페이스이며 구현체는 없다. EntityManager도 인터페이스이다.
Hibernate
JPA의 구현체
Hibernate는 JPA 명세의 구현체이다. javax.persistence.EntityManager와 같은 JPA의 인터페이스를 직접 구현한 라이브러리이다.
JPA
EntityManagerFactory, EntityManager, EntityTransaction
Hibernate
SessionFactory, Session, Transcation
Hibernate는 위의 JPA의 인터페이스를 상속받고 각각 Impl로 구현하고 있다.
Spring Data JPA
JPA를 쓰기 편하게 만들어놓은 모듈
우리가 사용하는 Repository가 Spring Data JPA의 핵심이다.
Spring Data JPA는 JPA를 한단계 더 추상화시킨 Repository라는 인터페이스를 제공한다.
아래블로그에 자세히 나와있어서 참고하면 좋을듯 하다.
https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/
'프로그래밍 노트 > JPA' 카테고리의 다른 글
[JPA] 영속성 관리_1 (EntityManager, EntityManagerFactory, PersistContext) (0) | 2019.09.03 |
---|---|
[JPA] 스프링 데이터 JPA 소개 (0) | 2019.09.02 |
[JPA] 객체지향 쿼리 QueryDSL (0) | 2019.08.26 |
[JPA] JPQL 문법, 내용정리 (0) | 2019.08.21 |
[JPA] JPQL이란? (0) | 2019.08.18 |