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

Como usar Spring Boot com MongoDB


Spring Boot é uma estrutura de código aberto baseada em Java para a criação de microsserviços, que permite aos desenvolvedores implantar e desenvolver serviços de forma independente. Cada serviço em execução tem seu processo, alcançando assim o modelo leve que suporta aplicativos de negócios. Os microsserviços têm várias vantagens:escalabilidade simples, configuração mínima, menor tempo de produção, compatibilidade de contêiner e fácil desenvolvimento.

O Spring boot fornece uma boa plataforma para desenvolvedores criarem aplicativos Spring autônomos e prontos para produção que você pode simplesmente executar; assim, pode-se começar com configurações mínimas sem a necessidade de uma configuração de mola inteira.

Por exemplo, lidar com o gerenciamento de dependências é complexo para grandes projetos; O Spring Boot resolve essa dificuldade fornecendo um conjunto de dependências para conveniência do desenvolvedor. O aplicativo Spring Boot verifica todos os beans e declarações de pacote quando o aplicativo é inicializado; Além disso, a anotação do aplicativo Spring Boot inclui varredura de componentes, configuração automática e configuração do Spring Boot.

Recursos do Spring Boot


Abaixo estão alguns dos recursos padrão do spring-boot:
  1. Ele configura automaticamente as bibliotecas Spring e de terceiros quando possível
  2. Ele fornece dependências 'iniciais' opinativas para simplificar sua configuração de compilação
  3. Não há requisito para configuração XML e sem geração de código
  4. Além disso, oferece recursos prontos para produção, como métricas de configuração externalizadas e verificações de integridade
  5. Tem um Tomcat incorporado, Undertow diretamente ou Jetty; assim, não há necessidade de implantar arquivos WAR
  6. Além disso, ele cria aplicativos Spring autônomos

Vantagens do Spring Boot para desenvolvedores

  1. Aumenta a produtividade
  2. Facilita o desenvolvimento e a compreensão de aplicativos Spring
  3. Reduz o desenvolvimento do tempo.

 Metas do Spring Boot


Ele é projetado para:
  1. Desenvolva aplicativos Spring prontos para produção de maneira mais direta
  2. Evite configurações XML complexas no Spring
  3. Reduza o tempo de desenvolvimento e execute o aplicativo de forma independente
  4. Ofereça uma maneira mais simples de começar a usar o aplicativo.

O Spring Boot é mais preferido por causa dos recursos e benefícios que ele oferece, como:
  1. Fornecimento de um poderoso processamento em lote e gerenciamento de endpoints REST
  2. Fornecimento de uma maneira mais flexível de configurar transações de dados, Java Beans j e configurações XML.
  3. Oferece anotações baseadas em aplicativos de mola
  4. Simplifica o gerenciamento de dependências, inclui um Servlet Container incorporado
  5. Não são necessárias configurações manuais, pois tudo no Spring Boot é configurado automaticamente

MongoDB é um programa de banco de dados orientado a documentos, multiplataforma e disponível na fonte. É um banco de dados de documentos que oferece alta escalabilidade e flexibilidade de programas. Além disso, oferece aos usuários consultas e indexações rápidas, o que, a longo prazo, aumenta seu desempenho.

O MongoDB é classificado como um programa de banco de dados NoSQL e usa documentos semelhantes a JSON com esquemas opcionais e flexíveis. Esse banco de dados foi desenvolvido pela MongoDB Inc., uma empresa americana que desenvolve e fornece suporte comercial para o banco de dados disponível na fonte. O MongoDB é licenciado sob a Licença Pública do Lado do Servidor (SSPL).

O MongoDB teve uma melhoria contínua em seus recursos devido ao desenvolvimento contínuo de versões, por exemplo;
DATA VERSÃO NOTA DE RECURSO
Dezembro de 2009 1.2 Funções JavaScript armazenadas
Criação de índice mais rápida
Mais índices por coleção
Tempo de sincronização configurável
Vários recursos e correções menores
agosto de 2010 1.6 Mapear/reduzir
Conjuntos de réplicas
Fragmentação pronta para produção
Suporte para IPv6
março de 2013 2.4 Índice de hash
Mudar para o mecanismo JavaScript V8
Suporte geoespacial aprimorado
Pesquisa de texto aprimorada
Aprimoramentos de segurança
8 de abril de 2014 2.6 Melhorias no mecanismo de consulta
Aprimoramentos de agregação
Aprimoramentos de segurança
Novo protocolo de operação de gravação
Integração de pesquisa de texto
3 de março de 2015 3.0 Funcionalidade de explicação melhorada
API do mecanismo de armazenamento conectável
Gerente de operações do MongoDB
Suporte ao mecanismo de armazenamento Tiger com fio
autenticação SCRAM-SHA-1
8 de dezembro de 2015 3.2 Melhorias na eleição de replicação
Validações de documentos
Mecanismo de armazenamento Tiger com fio por padrão
Configurar servidores como conjuntos de réplicas
Movido do V8 para o Spider Monkey
Validações de documentos
Leia a preocupação
29 de novembro de 2016 3.4 Agrupamento, preocupações e visualizações de leitura linearizável
Junho de 2018 4.0 Transações aprimoradas
13 de julho de 2021 5.0 Criptografia em nível de campo do lado do cliente
API com versão à prova de futuro
Suporte a séries temporais
O reestilhaçamento ao vivo envolve alterar os mapeamentos de fragmentos de objeto e mover o objeto para outro fragmento.

Aplicativos autônomos rápidos e fáceis podem ser criados com a ajuda do Spring Boot (como veremos mais adiante). Como resultado de sua facilidade de uso, o MongoDB se tornou o banco de dados NoSQL mais popular. Rápido, seguro, confiável e com necessidade de tempo de desenvolvimento mínimo pode ser criado combinando Spring Boot e MongoDB.

Este artigo mostra como usar a API Spring Data MongoDB para combinar Spring Boot com MongoDB.

Como usar o Spring Boot com MongoDB


O Spring Boot é uma estrutura da Web baseada em microsserviço que é configurada automaticamente e pode fornecer recursos integrados de segurança e acesso ao banco de dados. Assim, o Spring boot pode criar rapidamente um aplicativo independente sem alterações de configuração. Por outro lado, o MongoDB é o banco de dados NoSQL mais popular, pois pode armazenar e recuperar dados facilmente. A combinação do Spring Boot e do MongoDB resulta em aplicativos seguros, rápidos e confiáveis ​​que exigem tempo mínimo de desenvolvimento.

O Spring Boot cria aplicativos rápidos prontos para produção. O MongoDB e o Spring Boot interagem usando a classe Mongo Template e a interface do Mongo Repository.
  • Modelo Mongo — implementa um conjunto de APIs prontas para uso. Uma boa opção para operações como agregações de atualizações, entre outras; além disso, o Mongo Template oferece um controle mais refinado sobre consultas personalizadas.
  • Repositório Mongo é usado para consultas básicas envolvendo muitos campos de documentos, como visualização de documentos e criação de dados.

A configuração do Spring Boot MongoDB usando ambas as abordagens precisa apenas de algumas linhas de código.

O Spring Boot é um framework de aplicação para aplicações web Java baseado no framework MVC (Model-View-Controller). Sua injeção de dependência lida com recursos como segurança de banco de dados, acesso e inicialização, permitindo que os desenvolvedores se concentrem na lógica de negócios. Além disso, ele é construído sobre o framework Spring, principalmente para APIs REST e requer poucas configurações. Possui quatro camadas:

A camada de apresentação — A parte de visualização do framework MVC lida com o front-end.

A camada de negócios é o controlador onde toda a lógica de negócios e validações são feitas.

Camada de persistência — Essa camada converte os objetos de negócios em objetos de banco de dados.

Camada de banco de dados — As operações reais de CRUD (Criar, Ler, Atualizar, Excluir).

MongoDB é um banco de dados rápido capaz de lidar com grandes quantidades de dados organizados e não estruturados, tornando-o ideal para aplicações web. O MongoDB armazena dados como objetos JSON binários, o que simplifica a recuperação de dados. A estrutura Spring inclui conectores robustos que permitem operações eficientes de banco de dados com o MongoDB.

Estamos preocupados apenas com as camadas Persistência e Banco de Dados neste tutorial de exemplo do Spring Boot com MongoDB. Executaremos nosso software por meio de um Ambiente de Desenvolvimento Integrado (IDE) para manter uma forte ênfase nas operações CRUD. Para conectar o Spring Boot e o MongoDB, adicionaremos as configurações do Spring Boot MongoDB.

O que vamos construir neste exemplo


Vamos desenvolver uma lista de compras de supermercado de um usuário fictício. Devemos realizar os seguintes procedimentos:
  1. Definimos um item de supermercado Plain Old Java Object (POJO) com um ID, um nome, uma quantidade e uma categoria em nosso aplicativo Spring.
  2. Depois disso, realizamos ações de criação, leitura, atualização e exclusão (CRUD) por meio da interface pública do MongoRepository.
  3. Por fim, demonstramos um método diferente para modificar documentos usando a classe MongoTemplate.

Pré-requisitos


Nós exigimos:
  • Cluster MongoDB Atlas (se você ainda não tiver uma conta, inscreva-se gratuitamente antes de prosseguir para a próxima fase).
  • Spring Initializr
  • Java 1.8
  • Maven (instale o Maven acessando “Ajuda -> e depois Instalar novo software” no Eclipse).
  • Um ambiente de desenvolvimento integrado (IDE) importará as bibliotecas e dependências essenciais. O Eclipse será usado para esta ilustração do projeto.

Para começar, crie um projeto Spring Boot com as seguintes configurações usando Spring Initializr:

Escolha Maven Project com Java (8) como linguagem de programação e Spring Boot 2.5.3 como versão. Além disso, adicione dependências Spring Web e Spring Data MongoDB. O Spring Web integra o servidor Apache Tomcat, Spring MVC e REST em seu aplicativo, para centralizar o gerenciamento de todas as dependências comuns.

Aproveitamos a dependência do Spring Data MongoDB para acessar dados do nosso cluster MongoDB Atlas neste aplicativo.

Insira os metadados do projeto (como ilustrado acima) e escolha a opção JAR. O Spring Initializr gerencia a criação do arquivo pom.xml enquanto o Maven baixa as dependências necessárias via pom.xml.

Isso conclui nossos preparativos para as configurações. Depois disso, podemos clicar no botão Gerar para gerar todos os arquivos necessários para inicializar o projeto Spring Boot. Depois disso, o navegador começará a baixar um arquivo ZIP automaticamente.

Após baixar o arquivo ZIP, descompacte o projeto. No IDE, abra o projeto. Você pode ver um exemplo de uma estrutura de projeto semelhante a esta:

Como podemos ver, as dependências que adicionamos estão incluídas no arquivo pom.xml como artifactId:

É hora de preencher o subdiretório src/main/java com conteúdo.

Implementação do modelo MongoDB


A classe POJO ou GroceryItem serve como nosso modelo aqui.

Crie um pacote chamado “com.example.mdbspringboot.model” e inclua a classe GroceryItem.java dentro dele.

A anotação @Document é usada para especificar o nome da coleção que o modelo utilizará. O MongoDB criará a coleção se ela ainda não existir.

Podemos gerar getters e setters para este código usando a opção Eclipse Source -> Generate Getters and Setters. Primeiro, utilize a anotação @Id para especificar a chave primária _id do documento MongoDB. O MongoDB produzirá automaticamente um campo _id quando o documento for criado se não especificarmos nada.

Implementação da API do MongoDB no Spring Boot


O repositório é onde a API é implementada. Ele serve como uma ponte entre o banco de dados e o modelo, fornecendo acesso a todas as atividades CRUD.

Crie um pacote chamado "com.example.mdbspringboot.repository" para conter todos os arquivos do repositório.

Criamos uma interface pública para ItemRepository que estende a interface MongoRepository.

A primeira abordagem, findItemByName, requer um argumento de consulta, que especifica o campo no qual a consulta deve ser filtrada. Isso é especificado usando a anotação @Query. A segunda técnica aproveita o campo de categoria para recuperar todos os objetos pertencentes a uma categoria específica. Queremos apenas o nome e o número do campo projetado na resposta da consulta; portanto, definimos esses campos como 1. Reaplicamos o método count() em seu estado atual.

Exemplos de MongoDB com Spring Boot CRUD


Agora estamos prontos para desenvolver nosso aplicativo Spring e testar os métodos.

Para vincular ao MongoDB Atlas, definimos a string de conexão no arquivo application.properties da pasta src/main/resources. A string de conexão do cluster pode ser acessada na interface do Atlas. Nenhum outro arquivo é necessário para incluir código relacionado à conexão. O Spring Boot gerencia a conexão do banco de dados em nosso nome.

Além disso, especificamos o nome do banco de dados aqui – o MongoDB criará um se ele não existir.

Não estamos usando o Controller ou a View nesta amostra do Spring Boot MongoDB. Em vez disso, para visualizar a saída no console, utilizaremos um CommandLineRunner.

Crie a classe principal MdbSpringBootApplication.java no pacote raiz com.example.mdbspringboot:

Para executar o aplicativo spring, nossa classe MdbSpringBootApplication usa a interface CommandLineRunner. O ItemRepository é Autowired, o que significa que o Spring o descobrirá automaticamente. A anotação @SpringBootApplication é usada para inicializar o Application Context. Além disso, habilitamos os repositórios do Mongo com @EnableMongoRepositories. A estrutura do nosso projeto agora deve se parecer com o seguinte:

Agora, vamos adicionar as operações do repositório à classe principal, que será usada para operações CRUD:

Criar uma operação Spring Boot do MongoDB


Usaremos a função salvar para criar novos documentos. Podemos acessar o método save através da classe SimpleMongoRepository, que usa o protocolo MongoRepository. Nossa interface ItemRepository estende a interface ItemRepository do MongoRepository.

O método save aceitará um parâmetro do tipo GroceryItem. Esta seção criará cinco itens de mercearia (documentos) e usará a função salvar para armazená-los no MongoDB.

Operações de leitura do Spring Boot MongoDB


Estamos realizando quatro operações de leitura distintas neste aplicativo:

Utilize a função findAll() para recuperar todos os documentos (itens de mercearia).

A função findItemByName retorna um único item (documento) com base em seu campo de nome.

Recupere uma lista de objetos organizados por categoria.

Calcule o número total de objetos.

Podemos projetar uma função auxiliar para formatar o resultado das operações de leitura:

Operação de atualização do MongoDB Spring Boot


Suponha que mudemos de ideia e prefiramos o termo “larica” a “lanches” em nossa lista de compras. Precisaríamos atualizar quaisquer documentos que contenham a categoria “lanches”. Para isso, devemos primeiro recuperar todos os papéis pertencentes à categoria “lanches”, alterar a categoria para “laricas” e depois salvar todos os documentos.

Operação de exclusão do MongoDB Spring Boot


Em vez de alterar uma categoria ou item, podemos querer remover um item de supermercado da nossa lista. Usando a função deleteById predefinida, podemos remover o item de mercearia com um ID específico.

Poderíamos usar o groceryItemRepo.deleteAll(); função para remover todos os itens. A remoção de todos os documentos da coleção não os excluirá.

Montagem das operações CRUD


Em seguida, implementaremos o CommandLineRunner. Para invocar os métodos anteriores, use o método run():

As instruções system.out são usadas para aprimorar a aparência da saída.

Quando o software é executado, a seguinte saída é esperada:

Função de atualização do MongoDB Spring Boot em conjunto com MongoTemplate


Além disso, podemos utilizar a classe MongoTemplate para realizar ações de atualização em um campo específico. Inclui a funcionalidade padrão do pacote org.springframework.data.mongodb.core.query. Não precisamos escrever uma grande quantidade de código e a atualização pode ser realizada com uma única consulta ao banco de dados. MongoTemplate também pode ser usado para processos mais complicados, como agregações (não no escopo deste guia).

Um repositório personalizado deve ser feito antes de usar uma classe chamada MongoTemplate. É aqui que a consulta para a atualização será construída.

Permita-me demonstrar como construir um método que atualiza a quantidade de um item de supermercado.

Construa uma interface CustomItemRepository:

Podemos estender a interface com quantos métodos forem necessários e fornecer exemplos na classe CustomItemRepositoryImpl:

O Spring importará as dependências do objeto porque MongoTemplate é @Autowired. Além disso, a anotação @Component permite que o Spring descubra a interface CustomItemRepository.

A etapa a seguir é invocar essa função de dentro de nossa classe principal. Tal como acontece com o supermercadoItemRepo, devemos definir nosso customRepo da seguinte forma:

Em seguida, na classe principal, crie o seguinte método que invoca nossa função customRepo:

Adicione o seguinte método ao método run para que seja invocado quando o programa for executado:

Você deve obter o seguinte resultado:

Como dito anteriormente, conseguimos realizar a modificação em uma única transação de banco de dados em vez do MongoRepository, que exigia três ações:pesquisar, definir e salvar. MongoTemplate também inclui o método updateMulti(), que permite atualizar vários documentos simultaneamente.

Conclusão


Demonstramos neste artigo como é simples integrar o MongoDB com o Spring Boot. Nenhum outro código é necessário para se conectar ao MongoDB Atlas. O MongoDB Atlas fornece uma interface fácil de usar para armazenar e acessar dados de qualquer local. Se você concluiu este tutorial simples, acreditamos que agora você entende como usar o Spring Boot com o MongoDB. Se você encontrar alguma dificuldade, entre em contato através da seção de comentários para obter ajuda. Obrigado por ler.