Trilha da Alura Java e Spring Boot: Aprenda a criar aplicações com o framework mais amado do mundo Java.
API REST desenvolvida com Spring Boot para gerenciamento de médicos e pacientes de uma clínica médica.
| Tecnologia | Versão | Uso |
|---|---|---|
| Java | 17 | Linguagem principal |
| Spring Boot | 4.1.0 | Framework base |
| Spring Data JPA | - | Persistência e repositórios |
| Spring Validation | - | Validação dos dados de entrada |
| Flyway | - | Versionamento do banco de dados |
| Lombok | - | Redução de boilerplate (getters, construtores) |
| MySQL | - | Banco de dados relacional |
| Maven | - | Gerenciamento de dependências |
- DTO (Data Transfer Object): Records Java usados para receber e retornar dados da API, separando a camada de transporte da entidade de domínio
- JPA / Hibernate: Mapeamento objeto-relacional com anotações
@Entity,@Table,@Embedded,@Enumerated - Paginação: Resposta paginada com
PageableePage<T>noGETde listagem - Soft Delete: Exclusão lógica — o registro não é removido do banco, apenas o campo
ativoé definido comofalse - Injeção por construtor: Substituição do
@Autowiredno campo pela injeção via construtor (boa prática recomendada pelo Spring) - Bean Validation: Anotações
@Valid,@NotBlank,@NotNull,@Emailnos DTOs para validar os dados recebidos - Flyway Migrations: Versionamento incremental do schema com arquivos
.sqlemresources/db/migration - @Transactional: Controle de transação nas operações de escrita
src/main/java/med/voll/api/
├── controller/
│ ├── MedicoController.java
│ └── PacienteController.java
├── medico/
│ ├── Medico.java (entidade)
│ ├── MedicoRepository.java
│ ├── Especialidade.java (enum)
│ ├── DadosCadastroMedico.java (DTO)
│ ├── DadosListagemMedico.java (DTO)
│ └── DadosAtualizacaoMedico.java (DTO)
├── paciente/
│ ├── Paciente.java (entidade)
│ ├── PacienteRepository.java
│ ├── DadosCadastroPaciente.java (DTO)
│ ├── DadosListagemPaciente.java (DTO)
│ └── DadosAtualizacaoPaciente.java (DTO)
└── endereco/
├── Endereco.java (embeddable)
└── DadosEndereco.java (DTO)
| Método | Rota | Descrição |
|---|---|---|
POST |
/medicos |
Cadastra um novo médico |
GET |
/medicos |
Lista médicos ativos (paginado, ordenado por nome) |
PUT |
/medicos |
Atualiza dados de um médico |
DELETE |
/medicos/{id} |
Inativa um médico (soft delete) |
| Método | Rota | Descrição |
|---|---|---|
POST |
/pacientes |
Cadastra um novo paciente |
GET |
/pacientes |
Lista pacientes ativos (paginado, ordenado por nome) |
PUT |
/pacientes |
Atualiza dados de um paciente |
DELETE |
/pacientes/{id} |
Inativa um paciente (soft delete) |
V1__create-table-medicos.sql
V2__alter-table-medicos-add-column-telefone.sql
V3__alter-table-medicos-add-column-ativo.sql
V1__create-table-pacientes.sql
V3__alter-table-pacientes-add-column-ativo.sql
Pré-requisitos: Java 17, Maven e MySQL instalados.
-
Configure o banco de dados em
src/main/resources/application.properties:spring.datasource.url=jdbc:mysql://localhost/vollmed_api spring.datasource.username=seu_usuario spring.datasource.password=sua_senha
-
Execute:
mvn spring-boot:run
O Flyway criará as tabelas automaticamente na primeira execução.