2016-04-28 24 views
13

Ich versuche Spring Framework "wirklich" zu verstehen. Ich habe ein gutes Verständnis von Spring Core (DI) und Spring MVC.Ist Spring Data JPA eine JPA-Implementierung?

Für den Datenteil konzentriere ich mich jetzt auf Spring Data JPA. Wie ich es verstehe, ist JPA eine Standardspezifikation, für die es mehrere Implementierungen gibt, wobei Hibernate die berühmte ist.

Jetzt, als ich Spring Data JPA begann, hatte ich den Eindruck, dass Spring Data JPA eine unabhängige Implementierung der JPA-Spezifikation ist. Es stellte sich heraus, dass ich falsch liege.

Wenn ich es richtig, Spring Data JPA ist eine Abstraktionsschicht von der Feder verstanden, die intern andere JPA-Provider (Beispiel Hibernate) verwendet, so ist es typischerweise wie folgt aus:

Application ---> Spring Data JPA --> Hiberate --> JDBC ----> DB

Ist mein Verständnis richtig? Wenn ja, ist das nicht Spring Data JPA irreführend? Es ist NICHT ein JPA-Provider an sich, es ist nur eine Abstraktionsschicht, die über anderen JPA provider arbeitet.

Ich bin mir nicht sicher, ob ich wirklich Spring Framework verstehe oder es ist ein komplexes Framework insgesamt?

Kann mir bitte jemand helfen, es zu verstehen?

+3

ja, es ist ein irreführender Name. Ja, es ist kein JPA-Anbieter. Ja, es ist einfach eine Abstraktionsschicht. Ja Leute kennzeichnen häufig Fragen hier als JPA, wenn sie Spring Data JPA meinen. Und es gibt viele andere Implementierungen von JPA, die ihre eigenen Vorteile haben –

+1

Scheint richtig, nur dass das Abstraktionsniveau mir sehr hoch erscheint. [Spring Data JPA - Referenzdokumentation] (http://docs.spring.io/spring-data/jpa/docs/current/reference/html/). –

+0

Danke für Ihre Antworten. Ich glaube im Wesentlichen Spring verwendet die "bestehenden Frameworks", nicht, dass es eine Spezifikation Implementierung tut? Hab ich recht? Das lässt mich fragen, warum Spring ein berühmtes Framework ist, wenn es einfach die vorhandenen Frameworks unter der Haube nutzt. – CuriousMind

Antwort

26

Ich glaube nicht, dass es falsch benannt ist (Disclaimer: Ich bin der Projektleiter). Alle Spring Data-Projekte listen das Geschäft oder die API auf, die sie basierend auf in ihrem Namen sind. Spring Data JPA ist im Grunde Spring Data für JPA, wie Spring Data MongoDB ist Spring Data für MongoDB, wie Spring Batch Frühling ist für Batch-Anwendungen, Frühling Integration ist Frühling für Integrationsprojekte.

Do Ihre Abhängigkeitsgraphen für JPA korrigieren:

Application -> Spring Data JPA -> JPA <- Hibernate -> JDBC -> DataSource 

-> — uses 
<- — implements 

Das gleiche gilt für MongoDB:

Application -> Spring Data MongoDB -> MongoDB Java driver -> MongoDB 

etc. Ich immer noch daran interessiert sein würde, wo genau Sie den Eindruck, dass Spring Data JPA ist eine Implementierung von JPA als weder die project page noch die reference documentation Zustand, dass irgendwo. In der Tat ist besonders die project page sehr explizit darüber, welche Funktionalität das Projekt bietet. Auch könnte es helfen, die description of the umbrella project zu studieren, die versucht, einen grundlegenden Kontext für alle darin enthaltenen Module zu setzen.

+3

Vielen Dank für Ihre wundervolle Erklärung, es löscht die Dinge. Es war meine persönliche Interpretation, dass, wenn sie "Spring Data JPA" sagen, es eine Implementierung von JPA sein könnte. Anstatt diesen Zweifel im Hinterkopf zu behalten und Wissen über falsch angenommene Dinge aufzubauen, beschloss ich, diese Frage zu stellen, um meine Zweifel/mein Verständnis zu klären. Danke vielmals! – CuriousMind

+2

Sie sind herzlich willkommen! Freue mich zu helfen . –