Este projeto é uma aplicação Spring Boot que demonstra a integração com o MongoDB para operações de CRUD (Create, Read, Update, Delete) em documentos. Ele serve como um exemplo básico de como construir uma API RESTful utilizando Spring Data MongoDB.
- Spring Boot: Framework para facilitar a criação de aplicações Java autônomas e baseadas em produção.
- Spring Data MongoDB: Abstração para interagir com o banco de dados MongoDB, simplificando o desenvolvimento de repositórios.
- MongoDB: Banco de dados NoSQL orientado a documentos, utilizado para persistência dos dados.
- Java: Linguagem de programação principal.
- Maven: Ferramenta de automação de build e gerenciamento de dependências.
O projeto segue uma estrutura MVC (Model-View-Controller) adaptada para APIs RESTful, com as seguintes camadas principais:
config
: Contém classes de configuração, como aInstantiation.java
que popula o banco de dados com dados de teste ao iniciar a aplicação.domain
: Define os modelos de domínio (User.java
,Post.java
), que representam as entidades armazenadas no MongoDB.dto
: Contém objetos de transferência de dados (AuthorDTO.java
,CommentDTO.java
,UserDTO.java
) usados para otimizar a comunicação entre as camadas e evitar a exposição de entidades completas.repositories
: Interfaces que estendemMongoRepository
para operações de persistência com o MongoDB (UserRepository.java
,PostRepository.java
).resources
: Controladores REST (UserResource.java
,PostResource.java
) que expõem os endpoints da API.services
: Camada de serviço (UserService.java
,PostService.java
) que implementa a lógica de negócio e orquestra as operações de repositório.
Para executar este projeto localmente, siga os passos abaixo:
- Java 17 ou superior
- Maven 3.x
- MongoDB instalado e rodando na porta padrão (27017) ou configurado para uma porta diferente (neste caso, atualize o
application.properties
).
-
Clone o repositório:
git clone https://github.com/jfermartins/springboot-mongodb.git cd springboot-mongodb
-
Construa o projeto com Maven:
mvn clean install
-
Execute a aplicação:
mvn spring-boot:run
A aplicação será iniciada e estará disponível em
http://localhost:8080
.
Os seguintes endpoints estão disponíveis:
GET /users
: Retorna todos os usuários.GET /users/{id}
: Retorna um usuário pelo ID.POST /users
: Cria um novo usuário.PUT /users/{id}
: Atualiza um usuário existente.DELETE /users/{id}
: Deleta um usuário pelo ID.GET /users/{id}/posts
: Retorna todos os posts de um usuário específico.
GET /posts
: Retorna todos os posts.GET /posts/{id}
: Retorna um post pelo ID.GET /posts/titlesearch?text={text}
: Busca posts por título (case-insensitive).GET /posts/fullsearch?text={text}&minDate={date}&maxDate={date}
: Busca posts por texto no título ou corpo, e por um intervalo de datas.
O projeto utiliza duas coleções principais no MongoDB:
Representa os usuários da aplicação. Cada documento possui os seguintes campos:
_id
:ObjectId
(gerado automaticamente pelo MongoDB) - Identificador único do usuário.name
:String
- Nome do usuário.email
:String
- Endereço de e-mail do usuário (único).posts
:Array
de referências (DBRef
) para documentos na coleçãoposts
- Lista de posts criados pelo usuário.
Representa as publicações (posts) feitas pelos usuários. Cada documento possui os seguintes campos:
_id
:ObjectId
(gerado automaticamente pelo MongoDB) - Identificador único do post.date
:Date
- Data da publicação do post.title
:String
- Título do post.body
:String
- Conteúdo do post.author
:Object
(incorporado) - Informações do autor do post, contendoid
ename
(representado porAuthorDTO
).comments
:Array
deObjects
(incorporados) - Lista de comentários no post. Cada comentário contém:text
:String
- Conteúdo do comentário.date
:Date
- Data do comentário.author
:Object
(incorporado) - Informações do autor do comentário, contendoid
ename
(representado porAuthorDTO
).