마이의 개발 블로그

[Spring] JPA, Hibernate, ORM, Spring Data JPA 사이의 관계 정리 본문

개발지식/Spring

[Spring] JPA, Hibernate, ORM, Spring Data JPA 사이의 관계 정리

개발자마이 2023. 10. 10. 04:26
반응형

배경

스프링 진영에서 ORM을 이야기할 때 함께 언급되는 키워드로 JPA, Hibernate, Spring Data JPA가 있습니다. 아래에서 이 네 가지의 개념에 대해 각각 알아보고, 관계를 간단하게 정리해보려고 합니다.

ORM (Object Relational Mapping, 객체-관계 매핑)

객체(object)와 관계형(relational) 데이터베이스를 맵핑하는 프로그래밍 기법을 말하며, 객체지향 언어의 객체와 관계형 데이터베이스의 테이블 간의 매핑을 자동화하고 관리할 수 있게 해줍니다. ORM을 도입하면 개발자는 SQL 쿼리를 직접 작성할 필요 없이 이미 구현된 메서드를 통해 DB 조작을 수행할 수 있게 됩니다.

JPA (Java Persistence API)

자바 진영의 ORM 표준 명세(specification)를 뜻합니다. 여기서 JPA의 P가 의미하는 persistence는 영속성 또는 지속성이라는 뜻을 가지고 있는데, 이는 프로그램의 실행이 종료되더라도 데이터가 사라지지 않고 마지막 상태를 유지하는 특성을 뜻합니다. 영속성은 예를 들어, 백엔드 프로그램에서 DB와 통신하여 데이터의 CRUD를 수행하게 되는데, 그 결과를 DB에 저장함으로써 영속성을 부여한다는 개념으로 설명할 수 있습니다. 바꿔 말해 JPA는 DB에 영속성을 부여하기 위해 사용되는 자바의 API라고도 할 수 있습니다.

Hibernate

Hibernate는 자바 기반의 ORM 프레임워크이며, ORM과 DB조작에 필요한 기능들을 제공합니다. 앞서 설명한 JPA는 말그대로 표준 명세이며 인터페이스의 모음으로 이루어져있습니다. 그러므로 다양한 방식으로 인터페이스가 구현될 수 있는데, 그 구현체에는 Hibernate, EclipseLink, DataNucleus 등이 있습니다. 그 중 Hibernate는 가장 대중적으로 사용되는 오픈소스 어플리케이션입니다.

Spring Data JPA

Spring Data JPA는 스프링 프레임워크에서 JPA 사용에 필요한 기능을 제공하는 스프링 모듈입니다. 개발자는 JpaRepository 인터페이스를 통해 CRUD(Create, Read, Update, Delete) 기능을 사용할 수 있고, 리포지토리 인터페이스를 작성하여 기본 제공 메서드 이외에 별도의 쿼리 메서드를 정의하고 사용할 수 있습니다

ORM, JPA, Hibernate, Spring Data JPA 사이의 관계 정리

자바에서 ORM을 사용하기 위해서는 JPA에 정의된 인터페이스를 구현해서 사용해야 하는데, 그 구현체의 대표적인 예시가 자바 기반 ORM 프레임워크인 Hibernate입니다. Spring Data JPA는 스프링 프레임워크와 JPA를 결합하여 JPA를 더 편리하게 사용할 수 있게 해주는 스프링의 모듈입니다. 각각의 개념이 포괄하는 범위로 비교해본다면 ORM > JPA >= Hibernate 가 될 수 있고, Spring Data JPA는 별도의 개념으로 떼서 생각할 수 있을 것 같습니다.

반응형
Comments