하이버네이트 , 스프링 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 |
댓글