이전 포스터에서 JPA와 MyBatis에 대한 각 특징과 차이점을 기술하였다.
이에 이번 포스터는 Hibernate에 대한 기술을 기록하고자 한다.
JDBC API
를 사용하지 않는다는 것은 아니다.
JDBC API
는 자바에서 데이터베이스와 연결하고 상호작용하기 위한 표준 인터페이스인데, 앞서 이야기 했듯이, Hibernate는 SQL을 직접 사용하지는 않지만 내부적으로 JDBC API를 사용하여 DB와 연결하고 쿼리를 실행한다.
즉 Hibernate는 SQL을 추상화하여 개발자가 더 쉽게 작업할 수 있도록 도와주는 라이브러리라고 보면 된다.
장점
JPA의 구현체 중 하나이므로, Hibernate의 장점은 JPA의 장점이라고도 볼 수 있다.
단점
그럼 Hibernate는 JPA의 구현체 중 하나라고 이야기 하였는데, 정확히 무슨 말인가?
JPA는 자바의 표준
ORM API
로 데이터베이스와 객체 간의 매핑을 정의하는 규약이다.
반면,
Hibernate는 JPA의 구현체 중 하나 즉 JPA의 규약을 따르면서 추가적인 기능과 최적화를 제공하는
ORM 프레임워크
이다.
위 그림을 볼수 있듯이, 결론적으로 이야기 하자면 JPA는 기본적인 ORM (
쿼리, 캐싱, 성능 최적화
) 기능을 제공하지만, Hibernate는 JPA 기능 외에도강력한 캐싱, 비동기 처리, 쿼리 언어(HQL)
등의 추가 기능을 제공한다.