sql >> Databáze >  >> NoSQL >> MongoDB

Jaký je rozdíl mezi Spring Data MongoDB a Hibernate OGM pro MongoDB?

Zřeknutí se odpovědnosti:Jsem vedoucím projektu Spring Data, takže se zde převážně budu zabývat stránkou Spring Data:

Myslím, že hlavní rozdíl mezi těmito dvěma projekty je v tom, že tým Hibernate OGM se rozhodl soustředit své úsilí kolem JPA, zatímco tým Spring Data to výslovně neudělal. Důvody jsou následující:

  • JPA je ze své podstaty relační API. První dvě věty specifikace uvádějí, že se jedná o API pro objektově relační mapování. To je také ztělesněno v základních tématech API:hovoří o tabulkách, sloupcích, spojeních, transakcích. Koncepty, které nejsou nutně přenositelné do světa NoSQL.
  • Obvykle si vybíráte obchod NoSQL kvůli jeho speciálním vlastnostem (např. geoprostorové dotazy na MongoDB, schopnost provádět procházení grafů pro Neo4j). Žádná z nich není (a nebude) dostupná v JPA, takže stejně budete muset poskytnout proprietární rozšíření.
  • Ještě horší je, že JPA obsahuje koncepty, které jednoduše navedou uživatele špatnými směry, pokud předpokládají, že pracují v obchodě NoSQL, jak byli definováni v JPA:jak by mělo být vrácení transakce rozumně implementováno nad MongoDB?

S Spring Data jsme se tedy rozhodli poskytnout spíše konzistentní model programování pro podporované obchody, ale nesnažte se vše vnutit do jediného příliš abstrakce API:získáte známé implementace šablon, získáte abstrakci úložiště, která funguje identicky pro všechny obchody, ale umožní vám využít specifické funkce a koncepty úložiště.



  1. Ukládání vlastností objektu v redis

  2. Běží mongodb?

  3. Závažná chyba:Nezachycená výjimka „RedisException“ se zprávou „Server Redis odešel“

  4. Jak vložit více položek najednou do kolekce MongoDB