JPA/Hibernate [Spring] [2]

jbong·2025년 2월 17일
1

스프링부트

목록 보기
10/15
post-thumbnail

이전 포스터에서 JPA와 MyBatis에 대한 각 특징과 차이점을 기술하였다.
이에 이번 포스터는 Hibernate에 대한 기술을 기록하고자 한다.


Hibernate

  • Hibernate는 JPA의 구현체 중 하나이다.
  • Hibernate는 SQL을 직접 사용하지 않지만, 직접 사용하지 않는다고 해서 JDBC API를 사용하지 않는다는 것은 아니다.

JDBC API는 자바에서 데이터베이스와 연결하고 상호작용하기 위한 표준 인터페이스인데, 앞서 이야기 했듯이, Hibernate는 SQL을 직접 사용하지는 않지만 내부적으로 JDBC API를 사용하여 DB와 연결하고 쿼리를 실행한다.
즉 Hibernate는 SQL을 추상화하여 개발자가 더 쉽게 작업할 수 있도록 도와주는 라이브러리라고 보면 된다.

장점

JPA의 구현체 중 하나이므로, Hibernate의 장점은 JPA의 장점이라고도 볼 수 있다.

  • 테이블 생성, 변경 등 관리가 용이하다
  • 로직을 쿼리에 집중하기보다는 객체 자체에 집중을 할 수 있다.
  • 빠른 개발이 가능하다.

단점

  • 어렵다 (매우 어렵다고 한다.) ★★
  • 잘 이해하고 사용하지 않으면 데이터 손실이 발생할 수 있다고 한다.
  • 성능상 문제가 있어, 과부하가 걸릴 수 있다.

그럼 Hibernate는 JPA의 구현체 중 하나라고 이야기 하였는데, 정확히 무슨 말인가?

JPA vs Hibernate

JPA

JPA는 자바의 표준 ORM API로 데이터베이스와 객체 간의 매핑을 정의하는 규약이다.

반면,

Hibernate

Hibernate는 JPA의 구현체 중 하나 즉 JPA의 규약을 따르면서 추가적인 기능과 최적화를 제공하는 ORM 프레임워크이다.

위 그림을 볼수 있듯이, 결론적으로 이야기 하자면 JPA는 기본적인 ORM (쿼리, 캐싱, 성능 최적화) 기능을 제공하지만, Hibernate는 JPA 기능 외에도 강력한 캐싱, 비동기 처리, 쿼리 언어(HQL) 등의 추가 기능을 제공한다.

profile
노력하는 개미

0개의 댓글