sql >> Databasteknik >  >> NoSQL >> MongoDB

Vad är skillnaden mellan Spring Data MongoDB och Hibernate OGM för MongoDB?

Ansvarsfriskrivning:Jag är ledaren för Spring Data-projektet, så jag kommer mestadels att täcka Spring Data-sidan här:

Jag tror att kärnskillnaden mellan de två projekten är att Hibernate OGM-teamet valde att centrera sina ansträngningar kring JPA medan Spring Data-teamet uttryckligen inte gjorde det. Skälen är följande:

  • JPA är ett i sig relationellt API. De två första meningarna i specifikationen säger att det är ett API för objektrelationell mappning. Detta är också förkroppsligat i kärnteman i API:t:det handlar om tabeller, kolumner, kopplingar, transaktioner. Koncept som inte nödvändigtvis kan överföras till NoSQL-världen.
  • Du väljer vanligtvis en NoSQL-butik på grund av dess speciella egenskaper (t.ex. geo-spatiala frågor på MongoDB, att kunna utföra grafövergångar för Neo4j). Ingen av dem är (och kommer att vara) tillgänglig i JPA, därför måste du tillhandahålla proprietära tillägg ändå.
  • Ännu värre, JPA har koncept som helt enkelt guidar användarna in i fel riktningar om de antar att de fungerar i en NoSQL-butik som de definierades i JPA:hur ska en återställning av transaktioner implementeras på ett rimligt sätt ovanpå en MongoDB?

Så med Spring Data valde vi att snarare tillhandahålla en konsekvent programmeringsmodell för de butiker som stöds men försök inte tvinga in allt i ett enda överabstraherande API:du får de välkända mallimplementeringarna, du får repositoryabstraktionen, som fungerar identiskt för alla butiker men låter dig utnyttja butiksspecifika funktioner och koncept.



  1. Hur man går in i produktion med MongoDB - Topp tio tips

  2. Hur kan jag kontrollera om ett fält finns eller inte i MongoDB?

  3. Hur skapar man en DB för MongoDB-behållare vid uppstart?

  4. Hur man får alla nycklar i Redis