Spring을 보았습니다 .JPA는 리포지토리 (DAO 계층 : 내가 틀리지 않은 경우)를 해결합니다. 그래서 'Spring JPA + Hibernate'를 사용하거나 'Hibernate'를 직접 사용하는 것만 어떻게 다른가?
말했듯이 JPA 는 사양 이지만 Hibernate 는 해당 사양의 특정 구현입니다 (이러한 구현은 일반적으로 공급자 라고합니다 ). Hibernate를 사용하면 필요할 때 다른 옵션으로 전환 할 수있는 자유를 제한하는 공급자에게 자신을 묶는다 (예를 들어, Hibernate는 개발 프로세스를 중단시키는 버그가 있기 때문에 대신 EclipseLink 또는 ObjectDB를 사용하려고한다).
스프링 데이터 인용 JPA 의 문서 인용 :
애플리케이션의 데이터 액세스 계층을 구현하는 것은 꽤 번거로 웠습니다. 상용구 코드를 너무 많이 작성해야했습니다. 도메인 클래스는 빈혈이었고 실제 객체 지향 또는 도메인 기반 방식으로 설계되지 않았습니다.
이 두 가지 기술을 모두 사용하면 개발자가 풍부한 도메인 모델의 지속성과 관련하여 훨씬 쉽게 생활 할 수 있습니다. 그럼에도 불구하고 리포지토리를 구현하는 상용구 코드의 양은 특히 여전히 높습니다. 따라서 스프링 데이터의 저장소 추상화의 목표는 다양한 지속성 저장소에 대한 데이터 액세스 계층을 구현하려는 노력을 줄이는 것입니다.
요약하면 JPA 위에 또 다른 추상화 계층을 추가 하여 스프링 컨텍스트에서 Persistence Layer 를 지원하는 표준 기반 디자인을 정의합니다 . 정의 된 인터페이스 (Spring으로 알려진)는 프레임 워크가 JPA를 사용하여 결과를 제공하는 서비스를 제공합니다. Spring이 프로젝트를 스캔하고 찾는 방법으로 저장소를 정의합니다.
<repositories base-package="com.acme.repositories" />
따라서 컨테이너의 컨텍스트 나 외부에서 사용할 수 있습니다.
Spring, JPA는 정확히 무엇입니까? Spring, JPA는 JPA보다 더 많은 기능 (인터페이스)을 추가했지만 여전히 지정되었거나 JPA 공급자입니까?
Spring Data JPA는 사용자가 정의한 제공자를 사용하여 JPA 스펙을 참조하여 후드에서 지원되는 저장소를 구현하는 정의를 제공합니다.