Interagindo SpringData com MongoDB

Introdução

Este post apresenta de forma simples, como interarir com MongoDB, usando SpringData.

Pré-requisitos

Para efetuar os testes, é necessario estar com o MongoDB rodando. Veja como instalar e executar o MongoDB aqui.

Interface MongoRepository

O MongoRepository é implementado com muitas APIs para armazenar e recuperar dados. Podemos usar o MongoRepository com operações CRUD genéricas completas da interface CrudRepository, e métodos adicionais da interface PagingAndSortingRepository para paginação e ordenação. O MongoRepository também estende o QueryByExampleExecutor para permitir a execução da consulta por exemplo.

Criar projeto SpringBoot

Criar o projeto usando Spring Initializr ou STS (SpringSource Tool Suite)

Arquivo Maven e Dependências

O arquivo de configuração (pom.xml) deve ter a configuração do SpringBoot e dependência do spring-boot-starter-data-mongodb.

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.5.7.RELEASE</version>
</parent>

<groupId>br.com.whs.springmongodb</groupId>
<artifactId>spring-mongodb</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<name>spring-mongodb</name>

<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-mongodb</artifactId>
   </dependency>
</dependencies>

Classes do Projeto

Classe de Entidade

São as classes responsáveis pelo mapeamento da persistência no banco de dados.

Utilizam 2 anotações:

  • @Document – identifica o objeto de domínio da persistência no MongoDB
  • @Id – determina o Identificador do documento (neste caso da collection)

Classe Repository

As classes deve estender (extends) a classe MongoRepository.

Classe Service

Possuem função de fachada entre as classes Web e o Repository.

Classe Controller

Neste caso, utilizamos essas classes para atender as chamadas REST.

Classe Application

Esta é a classe responsável pelo funcionamento do SpringBoot. Como os valores de configuração foram mantidos, ele rodará sob o Tomcat (embedded) na porta 8080.

Rodando a aplicação

Pode rodar a aplicação de 2 formas:

  • Rodando a classe SpringMongoDBApplication (Run / Run As / Java Application)
  • Executando o comando $ mvn tomcat:run

Postman

Para rodar os testes, utilizamos o Postman, uma poderosa ferramenta para testar endpoints e APIs.

Adicionar User

Configurar o Postman, da seguinte forma:

  • Method: POST
  • URL: http://localhost:8080/user
  • Body: raw
  • Tipo: JSON (application/json)
  • Exemplo:
{
  "name": "lfchaim",
  "profile": [
    {
      "name": "admin"
    },
    {
      "name": "dev"
    }
  ],
  "age": 36,
  "email": "lfchaim@gmail.com"
}

Listar User

A listagem, sem parâmetros, retornará todos os registros do banco (collection: user).

Configuração:

  • Method: GET
  • URL: http://localhost:8080/user

O projeto completo pode ser baixado no Github.

Leave a Reply