sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cuál es la diferencia entre Spring Data MongoDB e Hibernate OGM para MongoDB?

Descargo de responsabilidad:soy el líder del proyecto Spring Data, por lo que cubriré principalmente el lado de Spring Data de las cosas aquí:

Creo que la distinción central entre los dos proyectos es que el equipo de Hibernate OGM eligió centrar sus esfuerzos en torno a JPA, mientras que el equipo de Spring Data explícitamente no lo hizo. Las razones son las siguientes:

  • JPA es una API inherentemente relacional. Las dos primeras oraciones de la especificación indican que es una API para el mapeo relacional de objetos. Esto también está incorporado en los temas centrales de la API:habla de tablas, columnas, uniones, transacciones. Conceptos que no son necesariamente transferibles al mundo NoSQL.
  • Por lo general, elige una tienda NoSQL debido a sus características especiales (por ejemplo, consultas geoespaciales en MongoDB, poder ejecutar gráficos transversales para Neo4j). Ninguno de ellos está (y estará) disponible en JPA, por lo tanto, deberá proporcionar extensiones propietarias de todos modos.
  • Aún peor, JPA presenta conceptos que simplemente guiarán a los usuarios en direcciones equivocadas si asumen que trabajan en una tienda NoSQL como se definió en JPA:¿cómo se debe implementar razonablemente una reversión de transacciones sobre un MongoDB?

Entonces, con Spring Data, elegimos proporcionar un modelo de programación consistente. para las tiendas admitidas, pero no intente forzar todo en una sola API de abstracción excesiva:obtiene las implementaciones de plantilla conocidas, obtiene la abstracción del repositorio, que funciona de manera idéntica para todas las tiendas, pero le permite aprovechar las características y conceptos específicos de la tienda.