Sistema CRUD desenvolvido em Spring Boot para gerenciamento de pessoas e suas tarefas. Este projeto foi desenvolvido com o objetivo de consolidar conhecimentos em desenvolvimento backend com Java e Spring Framework.
Este sistema permite o cadastro e gerenciamento de pessoas e tarefas, onde cada pessoa pode estar associada a uma tarefa. O relacionamento entre as entidades é do tipo um-para-muitos (One-to-Many), onde uma tarefa pode ter várias pessoas associadas.
- Tarefa → Pessoas: Uma tarefa pode ter várias pessoas (One-to-Many)
- Pessoa → Tarefa: Cada pessoa está associada a uma tarefa (Many-to-One)
- Java 17
- Spring Boot 4.0.0
- Spring Data JPA - Persistência de dados
- H2 Database - Banco de dados em memória
- Flyway - Controle de versão do banco de dados
- Lombok - Redução de boilerplate
- Maven - Gerenciamento de dependências
Cadastro/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── dev/pessoalprojects/cadastro/
│ │ │ ├── CadastroApplication.java
│ │ │ ├── Pessoas/
│ │ │ │ ├── PessoaModel.java
│ │ │ │ ├── PessoaController.java
│ │ │ │ ├── PessoaService.java
│ │ │ │ └── PessoaRepository.java
│ │ │ └── Tarefas/
│ │ │ ├── TarefasModel.java
│ │ │ ├── TarefasController.java
│ │ │ ├── TarefasService.java
│ │ │ └── TarefasRepository.java
│ │ └── resources/
│ │ ├── application.properties
│ │ └── db/migration/
│ └── test/
└── pom.xml
Representa uma pessoa cadastrada no sistema.
Campos:
id(Long) - Identificador único (gerado automaticamente)nome(String) - Nome da pessoaemail(String) - Email único da pessoaidade(int) - Idade da pessoatarefas(TarefasModel) - Tarefa associada à pessoa (relacionamento Many-to-One)
Tabela: tb_cadastro_de_pessoa
Representa uma tarefa cadastrada no sistema.
Campos:
id(Long) - Identificador único (gerado automaticamente)nome(String) - Nome da tarefadificuldade(String) - Nível de dificuldade da tarefapessoas(List) - Lista de pessoas associadas à tarefa (relacionamento One-to-Many)
Tabela: tb_cadastro_tarefas
POST /pessoas/criar
Content-Type: application/json
{
"nome": "João Silva",
"email": "[email protected]",
"idade": 30,
"tarefas": {
"id": 1
}
}
GET /pessoas/listar
GET /pessoas/listar/{id}
PUT /pessoas/alterar/{id}
Content-Type: application/json
{
"nome": "João Silva Atualizado",
"email": "[email protected]",
"idade": 31,
"tarefas": {
"id": 1
}
}
DELETE /pessoas/deletar/{id}
POST /tarefas/criar
Nota: Endpoint em desenvolvimento
GET /tarefas/listar
GET /tarefas/listar/{id}
PUT /tarefas/alterarID
Nota: Endpoint em desenvolvimento
DELETE /tarefas/deletarID
Nota: Endpoint em desenvolvimento
O projeto utiliza variáveis de ambiente para configuração do banco de dados. Configure as seguintes variáveis:
DATABASE_URL- URL de conexão com o banco H2DATABASE_USERNAME- Usuário do banco de dadosDATABASE_PASSWORD- Senha do banco de dados
O arquivo de configuração está localizado em src/main/resources/application.properties e contém:
- Configuração do H2 Console (habilitado)
- Configuração do JPA/Hibernate (ddl-auto: update)
- Configuração do Flyway para migrações de banco de dados
- Java 17 ou superior
- Maven 3.6+ (ou use o Maven Wrapper incluído:
mvnwoumvnw.cmd)
-
Clone o repositório (se aplicável)
-
Configure as variáveis de ambiente:
export DATABASE_URL=jdbc:h2:mem:cadastro export DATABASE_USERNAME=sa export DATABASE_PASSWORD=
No Windows (PowerShell):
$env:DATABASE_URL="jdbc:h2:mem:cadastro" $env:DATABASE_USERNAME="sa" $env:DATABASE_PASSWORD=""
-
Compile o projeto:
./mvnw clean install
ou no Windows:
mvnw.cmd clean install
-
Execute a aplicação:
./mvnw spring-boot:run
ou no Windows:
mvnw.cmd spring-boot:run
-
Acesse a aplicação:
- API Base URL:
http://localhost:8080 - H2 Console:
http://localhost:8080/h2-console
- API Base URL:
Execute os testes com:
./mvnw test- O projeto utiliza Lombok para reduzir código boilerplate (getters, setters, construtores)
- O banco de dados H2 é usado em memória, ideal para desenvolvimento e testes
- O Flyway está configurado para gerenciar migrações do banco de dados
- Alguns endpoints de Tarefas ainda estão em desenvolvimento (retornam mensagens de texto)
- Implementar completamente os endpoints de criação, atualização e deleção de tarefas
- Adicionar autenticação JWT
- Implementar tratamento de erros personalizado
- Adicionar testes unitários e de integração
- Documentar API com Swagger/OpenAPI
- Implementar DTOs
Projeto desenvolvido para fins de estudo e consolidação de conhecimentos em Spring Boot e desenvolvimento backend.
Versão: 0.0.1-SNAPSHOT