🕊️ [Medium] JPA vs Hibernate vs DataJPA

Java에서 데이터 지속성은 시간이 지남에 따라 많은 관심을 받았으며, 눈에 띄는 발전을 이뤄왔습니다. 처음에는 JDBC API를 직접 사용하는 것에서 시작하여, 점점 더 추상화되고 개발자가 사용하기 쉬운 표준화된 메커니즘으로 발전해왔습니다.

 

이러한 진화 과정에서 많은 지속성 기술이 개발되었으며, 이들 간의 차이는 종종 개발자들 사이에서 혼란을 일으킬 수 있습니다. 이러한 기술로는 Hibernate, JPA, Spring Data JPA가 있습니다.

 

개발할 때 이 중 하나를 선택해야 할까요? 아니면 이들 모두를 동시에 사용할 수 있을까요?


Hibernate

Hibernate는 가장 인기 있는 Java ORM(Object Relational Mapping) 프레임워크 중 하나로, Java 애플리케이션과 데이터베이스 간의 상호작용을 보다 효율적으로 관리하기 위해 사용됩니다. 이 프레임워크는 Java 클래스와 데이터베이스 테이블을 양방향으로 매핑할 수 있으며, 객체/관계 불일치 문제에 대한 완전한 솔루션을 제공합니다.


Hibernate는 주석(annotations)을 사용하여 매핑이 이루어지는 메타데이터를 생성합니다. 가장 많이 사용되는 주석 중 일부는 아래에 나와 있습니다.

@Entity
@Table(name = "CAR")
public class Car {

  @Id
  @Column(name = "CAR_ID")
  private Long cardId;

  @Column(name = "COLOR")
  private String color;

  @ManyToOne()
  @JoinColumn(name = "OWNER_ID")
  private Owner owner;
}

Hibernate가 Java에서 매우 인기가 있는 이유는 몇 가지 장점 때문입니다:

 

  • 생산성: 대부분의 구현이 개발자에게 숨겨져 있어 비즈니스 문제에 대한 최선의 해결책에 집중하기가 훨씬 쉬워집니다.

  • 성능: Hibernate는 캐싱(caching) 및 배칭(batching)과 같은 여러 최적화 메커니즘을 사용합니다.

  • 직관성: 대부분의 작업을 애노테이션을 통해 수행하므로 쉽게 이해할 수 있는 코드를 작성할 수 있습니다.

Hibernate는 시간이 지나면서 JPA 표준을 준수하고 그 메서드를 구현하게 되었습니다. 또한, Hibernate는 이전 버전과의 호환성을 유지하고 일부 고유한 기능을 계속 사용하기 위해 자체적인 구현도 유지하고 있습니다. 그렇다면 여기서 말하는 JPA란 무엇일까요?


JPA

JPA(Java Persistence API)는 규격이자, Java에서 데이터를 지속적으로 저장하는 표준화된 메커니즘의 일부가 되고자 하는 ORM 프레임워크가 구현해야 하는 일련의 규칙입니다.

 

JPA는 Hibernate와 같은 프레임워크가 아니라, ORM 프레임워크가 구현해야 하는 인터페이스에 불과합니다.

 

JPA는 지속성 프로세스를 관리하기 위해 EntityManager와 EntityManagerFactory에 의존합니다. EntityManager는 엔티티의 상태 변화를 관리하고 이를 SQL 쿼리로 변환하는 Persistence Context로 작동합니다.


JPA의 주요 장점은 다음과 같습니다:

  • 상호 운용성(Interportability): 두 프레임워크가 JPA를 준수하는 경우, 한 ORM 프레임워크에서 다른 프레임워크로 이동하는 과정이 훨씬 쉬워집니다.

  • 사용 편의성(Usability): JPQL이 쿼리를 정의할 때 엔티티 클래스와 그 필드를 인식할 수 있기 때문에 SQL 쿼리 작성이 더욱 쉬워집니다.


Spring Data JPA

Hibernate와 JPA가 모든 Java 애플리케이션에서 사용할 수 있는 반면, Spring Data JPA는 Spring 애플리케이션의 일부로 사용됩니다. Spring Data JPA는 Spring Data 프로젝트의 일부로, 리포지토리를 생성하는 데 필요한 상용구 코드를 줄여줌으로써 Spring 애플리케이션에서 데이터베이스 작업의 복잡성을 줄이는 것을 목표로 합니다. 이는 JPA 작업을 더욱 생산적으로 만들어주는 추가적인 추상화 수준을 제공합니다.


Spring Data JPA의 가장 큰 장점 중 하나는 Spring의 기능을 활용하여, SimpleJpaRepository의 도움으로 리포지토리의 구현이 런타임에 자동으로 이루어진다는 점입니다. 개발자가 영속성 데이터에 액세스하기 위해 새로운 리포지토리를 만들고자 할 때, JpaRepository를 확장하는 인터페이스만 작성하면 모든 메서드가 자동으로 구현됩니다. 정말 편리하죠!


결론

글의 초반에 제기된 질문에 대한 답은 다음과 같습니다:

 

, Hibernate, JPA 및 Spring Data JPA는 각자가 개발 단계에서 다른 목적을 가지므로, 그 유사성에도 불구하고 함께 사용할 수 있습니다.


번역: [https://ducktopia.tistory.com/131]

원문:

JPA vs Hibernate vs Spring Data JPA

Medium

JPA vs Hibernate vs Spring Data JPA

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 8월 21일 오전 10:51

 • 

저장 142조회 7,765

댓글 0