JPA와 Hibernate

JPA와 Hibernate

생성일
Oct 26, 2024 05:01 PM
최종 편집 일시
Last updated October 26, 2024
태그
JAVA

1. JPA (Java Persistence API)

  • 정의
    • JPA는 자바의 ORM 표준 인터페이스이다.
    • 객체와 데이터베이스의 매핑을 정의한 명세이다.
    • 자바에서 데이터베이스 작업을 위한 규칙을 정해두고, 이를 구현한 라이브러리를 통해 데이터를 처리한다.
  • 특징
    • 표준 인터페이스를 제공하기 때문에, 특정 구현체에 종속되지 않고 코드를 작성할 수 있다.
    • JPA 명세에 맞춰 작성된 코드는 Hibernate, EclipseLink, OpenJPA 등의 다양한 JPA 구현체에서 사용할 수 있다.
  • 주요 기능
    • Entity, Id, OneToMany, ManyToOne 등의 어노테이션을 통해 객체와 테이블 간의 매핑을 정의한다.
    • 영속성 컨텍스트 개념을 사용하여 엔티티를 관리한다.

2. Hibernate

  • 정의
    • Hibernate는 JPA의 구현체 중 하나로, JPA 명세를 기반으로 하지만 JPA에서 제공하지 않는 추가 기능을 제공한다.
  • 특징
    • Hibernate는 JPA 명세를 준수하며 이를 확장한 추가적인 기능(캐싱, 확장된 쿼리 지원 등)을 제공한다.
    • 전 세계적으로 많이 사용되는 JPA 구현체 중 하나로, 성능 및 안정성이 우수하다.
  • 주요 기능
    • 캐시 지원: 1차 캐시와 2차 캐시를 통해 성능 최적화가 가능하다.
    • QueryLanguage(HQL): Hibernate는 JPQL과 유사한 HQL을 제공하여 SQL처럼 객체를 조작하는 쿼리를 작성할 수 있다.
    • JPA와 동일한 ORM 매핑을 지원하면서도, JPA 표준에 포함되지 않는 Hibernate 전용 기능을 활용할 수 있다.

3. JPA와 Hibernate의 관계

  • JPA는 인터페이스이고, Hiberante는 JPA를 구현한 구현체이다.
  • JPA는 무엇을 할 수 있는지에 대한 규칙을 정의한 것이고, Hibernate는 실제로 이 규칙에 맞춰 동작하는 라이브러리이다.
  • 확장성: JPA 명세에서 정해진 기능 외에, Hibernate는 캐싱이나 HQL 등 다양한 추가 기능을 제공한다.