Manipulando Dados Embutidos em NoSQL com Java

Bancos de dados NoSQL diferem dos bancos de dados relacionais ao permitir estruturas mais complexas sem exigir relacionamentos tradicionais como um-para-muitos ou um-para-um. Em vez disso, os bancos de dados NoSQL aproveitam tipos flexíveis, como arrays ou subdocumentos, para armazenar dados relacionados de forma eficiente dentro de um único documento. Essa flexibilidade permite que os desenvolvedores projetem modelos que atendam às necessidades de consulta e desempenho de suas aplicações.

Jakarta NoSQL é um framework Java que simplifica as interações com bancos de dados NoSQL, incluindo o MongoDB. Ele fornece anotações que determinam como os dados são mapeados e armazenados, permitindo que os desenvolvedores controlem se os objetos incorporados são agrupados ou armazenados de forma plana.

Ao trabalhar com MongoDB e Jakarta NoSQL, uma das considerações-chave é como estruturar seus documentos. Escolher entre uma estrutura plana e uma estrutura agrupada impacta como os dados são armazenados, consultados e recuperados. Neste artigo, exploramos essas duas abordagens usando um exemplo prático.

Jakarta NoSQL e Entidade de Produto

Para entender as estruturas plana e agrupada, vamos primeiro introduzir a entidade Product e ver como as anotações do Jakarta NoSQL funcionam:

Java

 

Agora, vamos explorar como o campo manufacturer pode ser armazenado de forma diferente com base nas anotações do Jakarta NoSQL.

Compreendendo Estruturas Agrupadas e Planas

Estrutura Agrupada

Uma estrutura agrupada organiza informações relacionadas em objetos distintos dentro do documento. Essa abordagem melhora a legibilidade e permite uma prática de modelagem de domínio mais limpa. O Jakarta NoSQL alcança isso usando @Embeddable(Embeddable.EmbeddableType.GROUPING).

Exemplo:

JSON

 

Aqui, o fabricante está agrupado em um sub-objeto separado em vez de ter suas propriedades no nível superior.

Java

 

Estrutura Plana

Uma estrutura plana mantém informações relacionadas dentro do mesmo documento, incorporando listas ou campos aninhados diretamente. O Jakarta NoSQL permite isso usando @Embeddable(Embeddable.EmbeddableType.FLAT). Essa abordagem é benéfica quando você deseja acesso rápido a todos os detalhes sem a necessidade de consultas complexas.

Exemplo:

JSON

 

Esta abordagem armazena detalhes do fabricante diretamente no documento em vez de agrupá-los em campos separados.

Java

 

Exemplo de Uso no Jakarta NoSQL

O trecho de código a seguir demonstra como o Jakarta NoSQL integra essas estruturas:

Java

 

Escolhendo a Abordagem Certa

  • Use uma estrutura plana quando precisar de um layout de documento mais simples, com todas as propriedades no mesmo nível.
  • Use uma estrutura agrupada ao organizar dados relacionados em sub-objetos lógicos para melhorar a legibilidade e a manutenção.

Conclusão

Jakarta NoSQL oferece flexibilidade na estruturação de documentos MongoDB usando @Embeddable(Embeddable.EmbeddableType). Escolher estruturas planas ou agrupadas depende dos padrões de acesso aos dados e preferências de modelagem. Compreender essas abordagens permite um design de banco de dados eficiente, tornando as consultas mais eficazes, mantendo seu modelo de domínio limpo e bem estruturado.

Para o código completo, visite o repositório GitHub.

Vídeo

Source:
https://dzone.com/articles/handling-embedded-data-in-nosql-with-java