[번역글] 하이버네이트(Hibernate)와 Spring Data JPA의 차이점에 대해서
- 흑구의 공부내용 공유
- 2020. 8. 26. 09:14
안녕하세요. 오늘은 하이버네이트와 Spring Data JPA에 대하여 차이점을 알아보는 글을 발견하여 괜찮은 내용일 것 같아서 직접 번역/의역 과정을 거쳐서 포스팅하였습니다.
번역과정에서 구글 번역기를 활용하였으며 좀더 국어와 의미적인 부분을 맞추는 작업이 있었으므로 독자마다 원문과 내용차이가 있을 수 있으므로 이상하다 싶은 부분이 있으시다면 원문을 참조하여 주시고 댓글로 알려주시면 감사하겠습니다. 확인해보고 저도 배우고 싶습니다.
원문 : dzone.com/articles/what-is-the-difference-between-hibernate-and-sprin-1
hibernate와 spring data jpa의 차이점에 대하여
두가지 기술은 비슷한 점이 많습니다. 그런데 차이점은 뭘까요!?
이번 포스팅에서는 Hibernate ORM framework와 Spring Data JPA의 차이점에 대해서 논해보고자 합니다.
우선 JPA와 hibernate, spring data JPA에 대한 정의부터 간단히 소개하겠습니다. 왜냐하면 이 정의를 알아야 앞으로의 내용을 이해하기 쉽고 받아들이는 점이 더 많을 수 있기 때문입니다.
Java Persistence API(JPA)는 무엇인가?
JPA는 자바 객체에서 데이터베이스 관계형 테이블로 데이터를 영속화, 읽기, 관리 등의 기능을 제공합니다.
더 많은 정보를 얻고싶으시다면 다음 주소를 참조해주세요.(https://www.javaguides.net/p/jpa-tutorial-java-persistence-api.html)
hibernate 프레임워크는 무엇인가?
하이버네이트는 자바 환경에서의 객체-관계 모델 매핑 솔루션입니다. orm이라 불리우는 객체-관계 매핑은 어플리케이션레벨의 도메인 객체를 관계형 데이터베이스 테이블의 형태로 혹은 역으로 매핑시켜주는 프로그래밍 기술입니다. 하이버네이트는 낮은 결합도의 이점을 가진 ORM 툴로 Java Persistence API를 참조하여 구현하는 기능을 제공합니다.
하이버네이트의 더 많은 정보를 얻고싶으시다면 다음의 링크를 참조해주세요.(https://www.javaguides.net/p/hibernate-tutorial.html)
여기서 주목해야할 점은 JPA는 기술 스펙이고 하이버네이트는 이 기능을 구현하여 공급해주는 역할입니다.
Spring Data JPA는 무엇인가?
스프링 데이터 JPA는 스프링 프레임워크의 한 파트입니다. 스프링 데이터 JPA의 목적은 데이터를 접근하는 계층에서 발생하는 뻔하디 뻔한 반복적인 코드를 상당부분 줄이려고 하는 것입니다. 스프링 데이터 JPA는 JPA provider가 아닙니다. 하이버네이트 같은 JPA provider 위에 추상화 계층을 따로 두어 관리하는 라이브러리이/프레임워크입니다. 스프링 데이터 JPA에 대해서 더 많은 정보가 필요하시다면 다음의 링크를 참조해주세요.(https://www.javaguides.net/p/spring-data-jpa-tutorial.html)
이제까지 JPA, Hibernate, Spring Data JPA에 대해 알아보았습니다. 이제부터 본론으로 들어가서 스프링 데이터 JPA와하이버네이트의 차이점에 대해 논해보겠습니다.
하이버네이트와 Spring Data JPA의 차이점!
하이버네이트는 JPA 구현체입니다. 반면에 스프링 데이터 JPA는 JPA에 대한 데이터 접근의 추상화라고 말할 수 있습니다. 스프링 데이터 JPA는 GenericDao라는 커스텀 구현체를 제공합니다. 이것으로 메소드의 명칭으로 JPA 쿼리들을 생성할 수 있습니다.
Spring Data를 사용하면 Hibernate, Eclipse LInk 등의 JPA provider를 사용할 수 있습니다. 또 한가지는 @Transaction 어노테이션을 통해 트랜잭션 영역을 선언하여 관리할 수 있습니다.
Spring Data JPA는 구현체나 JPA provider가 아닙니다. 단지 데이터 레이어(database와 같은)에 접근하기 위해 필요한 뻔한 코드들의 사용을 줄임여주도록 하는 인터페이스입니다.
하이버네이트는 낮은 결합도의 이점을 살린 ORM 툴로써 API 레퍼런스르 제공합니다. 여기서 반드시 기억해야할 점은 Spring Data JPA는 항상 하이버네이트와 같은 JPA provider가 필요합니다.