JPA 와 하이버네이트란?

1. JPA와 하이버네이트란? 

DBMS에 여러 종류가 있듯이, ORM에도 여러 종류가 있다. 자바에서는 JPA(Java Persistence API)를 표준으로 사용한다.

 

즉, JPA는 자바 진영에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.

그러나 실제로 DB와 상호작용하려면 이 인터페이스를 구현한 구체적인 도구가 필요하다. 그 대표적인 구현체로는 Hibernate가 많이 사용된다.

 

Hibernate는 JPA 스펙을 구현한 자바용 ORM 프레임워크로, 스프링 부트 프로젝트에서 ORM을 구현할 때 자주 사용되는 도구이다.

 

JPA(Java Persistence API):

  • 자바 객체와 관계형 데이터베이스를 연결하여 데이터를 관리하는 표준 API이다. JPA는 객체 지향 도메인 모델과 데이터베이스 간의 중간 역할을 하며, 데이터베이스에 대한 접근을 추상화하여 애플리케이션 코드에서 데이터베이스에 의존하지 않고 데이터를 처리할 수 있도록 한다.

하이버네이트(Hibernate):

  • JPA 인터페이스 스펙을 구현한 대표적인 ORM 프레임워크이다. Hibernate는 JPA의 표준을 따르며, 내부적으로는 JDBC API를 활용하여 데이터베이스와 상호작용한다. 즉, Hibernate는 JPA의 구현체로서, 데이터베이스 작업을 처리하는 데 필요한 구체적인 기능을 제공한다.

  • 애플리케이션 (Application):
    • 최상위 레이어로, 스프링 부트 애플리케이션의 비즈니스 로직을 처리한다. 이 레이어에서 서비스나 리포지토리 계층을 통해 데이터베이스와 상호작용한다.
  • 스프링 데이터 JPA (Spring Data JPA):
    • 스프링 프레임워크의 모듈로, JPA를 더욱 쉽게 사용할 수 있도록 도와준다. 리포지토리 인터페이스를 제공하여 기본적인 CRUD 작업을 손쉽게 구현할 수 있게 해준다.
  • JPA:
    • 자바에서 ORM을 표준화한 API로, 애플리케이션과 데이터베이스 사이의 데이터 매핑을 관리한다. 객체지향 프로그래밍과 관계형 데이터베이스 간의 변환을 담당한다.
  • 하이버네이트 (Hibernate):
    • JPA의 구현체로, JPA가 제공하는 인터페이스를 실제로 구현하여 동작한다. 내부적으로는 JDBC API를 사용해 데이터베이스와 상호작용한다.
  • JDBC:
    • 자바에서 데이터베이스와의 연결을 관리하는 표준 API이다. SQL 쿼리를 실행하고 결과를 반환하는 역할을 한다. 하이버네이트는 JDBC를 사용하여 데이터베이스 작업을 수행한다.
  • DB (Database):
    • 실제 데이터가 저장되는 곳으로, RDBMS(Relational Database Management System)입니다. SQL을 통해 데이터를 저장, 조회, 수정, 삭제할 수 있다.

목차로 돌아가기