본문 바로가기
PROJECT

Hibernate VS Spring Data JPA

by tiit 2022. 11. 15.
반응형

하이버네이트 , 스프링 JPA --> 둘 다 Spring Data JPA 를 사용하면서 볼 수 있는 단어들

정확히 무슨 차이인지 알아보자 

 

Hibernate

"MORE THAN AN ORM, DISCOVER THE HIBERNATE GALAXY"

-자바생태계를 대표하는 ORM framework

- 스프링 부트에서 채택한 메인 ORM framework

- JPA 표준 스펙을 구현한 JPA Provider

- 고성능, 확장성, 안정성을 표방

- 다양한 하위 제품들로 나뉨

-- Hibernate ORM(최신:5.5, 스프링 부트:5.4.32)

-- Hibernate Validator

-- Hibernate Reactive 

 

Hibernate Query Language

하이버네이트가 사용하는 SQL 스타일 비표준 쿼리 언어

- 객체 모델에 초점을 맞춰 설계됨

- JPQL 의 바탕이 됨(JPQL은 HQL의 subset)

-- JPQL은 완벽한 HQL 문장이지만, 반대로는 성립하지 않음 

 

Criteria query

type-safety 를 제공하는 JPQL의 대안 표현법

 

Native SQL Query

특정 디비에 종속된 SQL도 사용 가능

---------------------------------------------------------------

Spring Data JPA

스프링에서 제공하는 JPA 추상화 모듈

-JPA 구현체의 사용을 한 번 더, Repository 라는 개념으로 추상화

-JPA 구현체의 사용을 감추고, 다양한 지원과 설정 방법을 제공

-JPA 기본 구현체로 Hibernate 사용

-Querydsl 지원 

 

Spring Data JPA를 사용한다면 JPA, 하이버네이트를 몰라도 되야 한다

-EntityManager 를 직접 사용하지 않는다

-JPQL 를 직접 사용하지 않는다

-persist(), merge(), close()를 직접 사용하지 않는다

-트랜잭션을 gerTransaction(), commit(), rollback()으로 관리하지 않는다

-코드가 하이버네이트를 직접 사용하고 있다면

--꼭 필요한 코드인지, 아니면 Spring Data JPA로 할 수 있는 일인지 확인하기

--그 코드는 하이버네이트와 직접적인 연관 관계를 가지게 됨

--추상화의 이점을 포기하게 되는 셈 

 

 

 

반응형

'PROJECT' 카테고리의 다른 글

JPA @Entity  (0) 2022.11.16
iBATIS, MyBatis, JdbcTemplate  (0) 2022.11.15
ORM, JPA, JPQL  (0) 2022.11.11
6월 12일 일요일  (0) 2022.06.12

댓글