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 utilizam 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 interações com bancos de dados NoSQL, incluindo MongoDB. Ele fornece anotações que determinam como os dados são mapeados e armazenados, permitindo que os desenvolvedores controlem se objetos embutidos são agrupados ou armazenados de maneira plana.

Ao trabalhar com MongoDB e Jakarta NoSQL, uma das considerações principais é como estruturar seus documentos. A escolha 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 Produto

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

Java

 

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

Entendendo 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. Jakarta NoSQL consegue isso utilizando @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. Jakarta NoSQL possibilita isso usando @Embeddable(Embeddable.EmbeddableType.FLAT). Essa abordagem é benéfica quando você deseja acesso rápido a todos os detalhes sem exigir consultas complexas.

Exemplo:

JSON

 

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

Java

 

Exemplo de Uso no Jakarta NoSQL

O seguinte trecho de código 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 quando organizar dados relacionados em sub-objetos lógicos para melhorar a legibilidade e a manutenibilidade.

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 ver o código completo, visite o repositório GitHub.

Vídeo

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