MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Qual é a diferença entre Spring Data MongoDB e Hibernate OGM para MongoDB?


Isenção de responsabilidade:sou o líder do projeto Spring Data, então vou cobrir principalmente o lado Spring Data das coisas aqui:

Eu acho que a principal distinção entre os dois projetos é que a equipe do Hibernate OGM escolheu centralizar seus esforços em torno do JPA, enquanto a equipe do Spring Data explicitamente não o fez. As razões são as seguintes:
  • JPA é uma API inerentemente relacional. As duas primeiras frases da especificação afirmam que é uma API para mapeamento relacional de objeto. Isso também está incorporado em temas centrais da API:fala sobre tabelas, colunas, junções, transações. Conceitos que não são necessariamente transferíveis para o mundo NoSQL.
  • Você geralmente escolhe um armazenamento NoSQL por causa de suas características especiais (por exemplo, consultas geoespaciais no MongoDB, sendo capaz de executar travessias de grafos para Neo4j). Nenhum deles está (e estará) disponível em JPA, portanto, você precisará fornecer extensões proprietárias de qualquer maneira.
  • Pior ainda, o JPA apresenta conceitos que simplesmente guiarão os usuários em direções erradas se eles assumirem que eles trabalham em um armazenamento NoSQL como foram definidos no JPA:como uma reversão de transação deve ser implementada razoavelmente em um MongoDB?
  • l>

Então, com o Spring Data, optamos por fornecer um modelo de programação consistente para as lojas suportadas, mas não tente forçar tudo em uma única API de abstração excessiva:você obtém as implementações de modelo bem conhecidas, obtém a abstração do repositório, que funciona de maneira idêntica para todas as lojas, mas permite aproveitar recursos e conceitos específicos da loja.