본문 바로가기
IT/Java

JPA, Hibernate, Spring Data JPA

by 성준하이 2022. 8. 17.
반응형

저번 포스팅에서 jpa에 대한 내용은 이미 다룬적이 있다.

참고를 하실 분들은 아래 참고 포스팅에서 직접 확인을 해보기 바란다.

 

이번 포스팅에서는 해당 JPA를 사용하는데 많이 나오고 함께 공부해야하는 hibernate와 비슷한 이름의 Spring Data JPA 에 대해서 함께 비교하며 얘기를 해볼까 한다.

 

JPA공부를 시작함에 있어서 많이들 헷갈려 하는 부분이 JPA와 Hibernate와의 관계다.


동영상강의에서는 처음에 EntityManager를 활용하여 Data를 삭제 저장 업데이트를 하지만, 실제 실무에서는 EntityManager를 사용하지 않고 Repository 인터페이스 만을 이용해서 JPA를 사용을 주로 한다.

만약 querydsl 까지 다루게 되면 EntityManager를 좀더 다뤄볼수는 있지만 순수 JPA만을 사용한다면 헷갈릴수 있는 부분이라고 생각한다.

 

간단하게 셋의 차이를 보이면 다음과 같다.

JPA

JPA(Java Persistence API)의 기술은 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
javax.persistance
단순히 인터페이스이며 구현체는 없다. EntityManager도 인터페이스이다.

Hibernate

Hibernate는 JPA 명세의 구현체이다.

javax.persistence.EntityManager와 같은 JPA의 인터페이스를 직접 구현한 라이브러리이다.
JPA
EntityManagerFactory, EntityManager, EntityTransaction, Hibernate, SessionFactory, Session, Transcation
Hibernate는 위의 JPA의 인터페이스를 상속받고 각각 Impl로 구현하고 있다.

Spring Data JPA

우리가 사용하는 Repository가 Spring Data JPA의 핵심이다.
Spring Data JPA는 JPA를 한단계 더 추상화시킨 Repository라는 인터페이스를 제공한다.

 

즉 결론적으로

JPA와 Hibernate는 자바에서 interface와 그 interface를 구현하는 class와 같은 관계이며

spring Data JPA는 좀더 사용하기 편하게 구현한 모듈이다.


참고 포스팅

https://thenicesj.tistory.com/106

 

SpringBoot/JPA part.1

저번 spring/mybatis 포스팅에 이어서 이번엔 springboot/JPA 포스팅을 다뤄볼것이다. spring과 springboot는 어떤 차이가 있는지는 아래 참고 포스팅 부분을 확인해보도록 하자. 시작하기 앞서 스프링을 해

thenicesj.tistory.com

 

반응형

'IT > Java' 카테고리의 다른 글

jackson annotation 관련  (41) 2022.08.20
Entity, DTO, VO 차이  (47) 2022.08.18
자바 직렬화(Serializable)  (34) 2022.08.15
delay 설정하기 (Thread.sleep)  (45) 2022.08.13
gson 에 대해서  (54) 2022.08.12

댓글