2013-04-22 40 views
100

Sono un po 'confuso sulla differenza tra Spring Data-JPA e JPA. So di JPA che si tratta di una specifica per la permanenza degli oggetti Java in un database relazionale che utilizza la tecnologia ORM popolare, vale a dire in altre parole JPA fornisce interfacce e altre tecnologie ORM, implementa quelle interfacce conosciute come provider JPA, ad esempio Hibernate.Spring Data-JPA contro JPA: qual è la differenza?

Ora che cos'è esattamente Spring Data JPA. Spring Data JPA ha aggiunto alcune funzionalità in più (interfacce) su JPA e viene ancora specificato o è anche un fornitore JPA?

Ho visto Spring Data JPA che funziona nei repository (livello DAO: se non sbaglio). Quindi intendo come è diverso usando 'Spring Data JPA + Hibernate' o usando solo la direzione 'Hibernate'?

risposta

95

vidi Spring, JPA wor ks around repositories (layer DAO: se non sbaglio). Quindi intendo come è diverso usando 'Spring JPA + Hibernate' o usando solo 'Hibernate' direttamente?

Come detto, JPA è una specificamentre Hibernate è una particolare implementazione di tale specifica (queste implementazioni sono solitamente denominati Provider). Usando Hibernate ti leghi a quel provider limitando la tua libertà di passare a un'altra opzione quando richiesto (ad esempio, vuoi usare EclipseLink o ObjectDB invece perché Hibernate ha un bug che interrompe il tuo processo di sviluppo).

Citando Spring Data JPA 's documentazione:

implementazione di un livello di accesso ai dati di una domanda è stata ingombrante per molto tempo. Doveva essere scritto troppo codice di codice. Le classi di dominio erano anemiche e non sono state progettate in modo reale orientato agli oggetti o al dominio.

L'utilizzo di entrambe queste tecnologie rende la vita degli sviluppatori molto più semplice per quanto riguarda la persistenza del modello di dominio ricco. Tuttavia, la quantità di codice boilerplate per implementare i repository, in particolare, è ancora piuttosto elevata. Pertanto, l'obiettivo dell'archiviazione del repository di Spring Data è ridurre lo sforzo di implementare in modo significativo i livelli di accesso ai dati per vari archivi di persistenza.

Riassumendo, è in cima JPA aggiungendo un ulteriore livello di astrazione, tipo di definizione di un design standard-based per supportare Persistenza strato in un contesto Spring. Quelle interfacce definite (note a Spring) forniscono i servizi che il framework gestisce usando JPA per servire i risultati.Si definisce un repository in una primavera modo può eseguire la scansione del progetto e lo trovo:

<repositories base-package="com.acme.repositories" /> 

Così, che consente di utilizzare nel contesto di un contenitore o al di fuori di esso.

Ora, che cos'è esattamente Spring, JPA. Spring è, JPA ha aggiunto alcune funzionalità in più (interfacce) su JPA e ancora è specificato solo o è anche un provider JPA?

Spring Data JPA fornisce una definizione per implementare i repository supportati sotto il cofano facendo riferimento alle specifiche JPA, utilizzando il provider definito dall'utente.

+1

Posso chiamare repository un insieme di entità che la primavera gestisce? Non so perché, ma il supporto JPA di Spring che utilizza i repository sembra molto simile a EntityManager di EJB - è il giusto pensiero o sono completamente diversi nel loro scopo? Grazie in anticipo. Mustafa. – Mustafa

+1

@Mustafa La maggior parte delle soluzioni ha motivi comuni. Difficile che l'obiettivo sia lo stesso, l'implementazione è diversa a causa delle interfacce coinvolte. – Gamb

20

L'API Java Persistence, a volte indicato come APP, è un framework Java gestione di dati relazionali in applicazioni che utilizzano la piattaforma Java, Standard Edition (JavaSE) e Java Platform, Enterprise Edition (JavaEE).

persistenza in questo contesto copre tre aree:

  • La stessa API, definiti nel pacchetto javax.persistence.

  • Java Persistence Query Language (JPQL).

  • Oggetto: metadati relazionali.

    enter image description here

primavera dati JPA è parte del progetto primavera dati ombrello che rende più facile da implementare repository basati JPA.

Caratteristiche:

  • supporto sofisticato per costruire repository basati su Spring e JPA
  • Supporto per predicati QueryDSL e quindi type-safe JPA interroga auditing
  • chiara dei classe dominio
  • supporto paginazione, l'esecuzione di query dinamica, capacità di integrare il codice di accesso ai dati personalizzato
  • Validazione di @Query query annotati in fase di bootstrap
  • Sostegno basato su XML mappatura entità
  • JavaConfig basa configurazione del repository con l'introduzione di @EnableJpaRepositories

    enter image description here
3

JPA è l'API Java Persistence, che è l'API standard di Java per il mapping relazionale a oggetti.

JPA è solo una specifica: è necessaria una sua implementazione per poterlo utilizzare. L'ibernazione è una delle implementazioni più note e più utilizzate di JPA, ma ce ne sono altre, come EclipseLink JPA.

Spring Framework è un framework di grandi dimensioni che consente di semplificare la scrittura di software di livello aziendale. Contiene supporto per molte tecnologie Java, incluso JPA.

Il Framework di primavera è costituito da una raccolta di progetti e uno di questi è Spring Data.

L'obiettivo di Spring Data è quello di semplificare il lavoro con diversi tipi di database, dai database relazionali tradizionali ai database NoSQL. Spring Data supporta JPA tramite il sottoprogetto JPA Spring Data.

Per scrivere un programma che utilizza JPA, è necessaria almeno un'implementazione JPA, come Hibernate.

Se si utilizza Spring Framework per l'applicazione, è probabile che si desideri utilizzare Spring Data JPA insieme a Hibernate.

Questo collegamento dovrebbe essere utile per capire meglio il concetto:

https://spring.io/blog/2011/02/10/getting-started-with-spring-data-jpa/

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui [le parti essenziali della risposta] (https://meta.stackexchange.com/a/8259) qui e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. [Le risposte che sono poco più di un collegamento possono essere cancellate] (https://stackoverflow.com/help/deleted-answers) – adiga

+0

Grazie @adiga ho aggiornato la mia risposta. – AmanSinghal

Problemi correlati