Skip to content

jfermartins/springboot-mongodb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Spring Boot com MongoDB

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.

Tecnologias Utilizadas

  • 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.

Estrutura do Projeto

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 a Instantiation.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 estendem MongoRepository 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.

Como Rodar o Projeto

Para executar este projeto localmente, siga os passos abaixo:

Pré-requisitos

  • 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).

Passos

  1. Clone o repositório:

    git clone https://github.com/jfermartins/springboot-mongodb.git
    cd springboot-mongodb
  2. Construa o projeto com Maven:

    mvn clean install
  3. Execute a aplicação:

    mvn spring-boot:run

    A aplicação será iniciada e estará disponível em http://localhost:8080.

Endpoints da API

Os seguintes endpoints estão disponíveis:

Usuários

  • 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.

Posts

  • 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.

Esquema do Banco de Dados

O projeto utiliza duas coleções principais no MongoDB:

Coleção users

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ção posts - Lista de posts criados pelo usuário.

Coleção posts

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, contendo id e name (representado por AuthorDTO).
  • comments: Array de Objects (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, contendo id e name (representado por AuthorDTO).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages