juliana-barreto /
order-management-api
API RESTful de E-commerce desenvolvida com Spring Boot, PostgreSQL e Swagger.
Loading repository data…
muriloalbuquerque / repository
API RESTful desenvolvida em Java 17 com Spring Boot para gerenciamento de alunos e matrículas — desafio de vaga backend júnior. Implementa DTOs, mapeamento 1:N, H2 em memória, e boas práticas de arquitetura limpa.
Desafio de vaga Backend Júnior — CRUD de Alunos e Matrículas utilizando Spring Boot, JPA/Hibernate e banco H2.
A aplicação expõe endpoints REST para cadastrar alunos e suas matrículas (relação 1:N). O projeto usa:
pom.xml.Estrutura principal (resumida):
alunos/
├─ pom.xml
├─ src/main/java/com/example/alunos
│ ├─ AlunosApplication.java
│ ├─ controller/AlunoController.java
│ ├─ dto/
│ │ ├─ AlunoRequest.java
│ │ ├─ AlunoResponse.java
│ │ └─ MatriculaDTO.java
│ ├─ entity/
│ │ ├─ Aluno.java
│ │ ├─ Matricula.java
│ │ └─ BaseEntity.java
│ ├─ mapper/AlunoMapper.java
│ ├─ repository/
│ │ ├─ AlunoRepository.java
│ │ └─ MatriculaRepository.java
│ └─ service/AlunoService.java
└─ src/main/resources/application.properties
Observação: o repositório que você enviou possui alguns trechos de código de exemplo com
...em Controller/Service/Mapper que indicam partes omitidas no vídeo/aula. As seções abaixo documentam o fluxo e como rodar o projeto; ajuste os métodos se necessário.
mvnw / mvnw.cmd)git clone <seu-repo>.git
cd alunos
O projeto usa H2 em memória. Se quiser habilitar o console web e configurar explicitamente a URL/credenciais, adicione no src/main/resources/application.properties:
# Nome da aplicação (já existe)
spring.application.name=alunos
# H2 console (opcional)
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
# Datasource H2 em memória
spring.datasource.url=jdbc:h2:mem:alunosdb;DB_CLOSE_DELAY=-1;MODE=LEGACY
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# JPA/Hibernate
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
Se você já tem outras configs, mantenha as suas. O trecho acima é apenas um exemplo funcional.
# usando o Maven Wrapper
./mvnw spring-boot:run # Linux/Mac
mvnw.cmd spring-boot:run # Windows
A aplicação sobe em: http://localhost:8080
H2 Console (se habilitado): http://localhost:8080/h2-console
JDBC URL: jdbc:h2:mem:alunosdb
Aluno (id, nome, dataNascimento, telefone)Matricula (id, codigoMatricula, nomeCurso, dataInicio, aluno)Mapeamentos principais:
Aluno → @OneToMany(mappedBy = "aluno", cascade = CascadeType.ALL, orphanRemoval = true)Matricula → @ManyToOne @JoinColumn(name = "aluno_id")AlunoRequest — payload de entrada (inclui lista de MatriculaDTO)AlunoResponse — payload de saídaMatriculaDTO — dados da matrícula (sem id)AlunoMapper — converte AlunoRequest → Aluno e Aluno → AlunoResponseExemplo de mapping (trecho simplificado):
List<Matricula> matriculas = request.matriculas()
.stream()
.map(m -> {
Matricula mat = new Matricula();
mat.setCodigoMatricula(m.codigoMatricula());
mat.setNomeCurso(m.nomeCurso());
mat.setDataInicio(m.dataInicio());
mat.setAluno(aluno);
return mat;
}).toList();
aluno.setMatriculas(matriculas);
Os métodos podem variar conforme o seu
AlunoController. Abaixo está o conjunto esperado para CRUD e listagem de matrículas.
/alunos — cria um aluno/alunos — lista todos/alunos/{id} — busca por id/alunos/{id}/matriculas — lista matrículas do aluno/alunos/{id} — atualiza aluno/alunos/{id} — remove alunoNo arquivo requisicoes.http na raiz do projeto:
### Criar novo aluno
POST http://localhost:8080/alunos
Content-Type: application/json
{
"nome": "Murilo Albuquerque",
"dataNascimento": "2004-07-21",
"telefone": "(82) 99999-0000",
"matriculas": [
{ "codigoMatricula": "MAT-001", "nomeCurso": "Engenharia de Software", "dataInicio": "2025-01-10" }
]
}
### Listar todos
GET http://localhost:8080/alunos
### Buscar por ID
GET http://localhost:8080/alunos/1
### Atualizar
PUT http://localhost:8080/alunos/1
Content-Type: application/json
{
"nome": "Murilo Atualizado",
"dataNascimento": "2004-07-21",
"telefone": "(82) 98888-1111",
"matriculas": [
{ "codigoMatricula": "MAT-001", "nomeCurso": "Java Avançado", "dataInicio": "2025-03-15" }
]
}
### Excluir
DELETE http://localhost:8080/alunos/1
controller, service, repository, mapper, dto, entity)Lombok para reduzir boilerplateHá um skeleton de teste em src/test/java/com/example/alunos/AlunosApplicationTests.java.
Você pode rodar:
./mvnw test
./mvnw clean package
java -jar target/alunos-0.0.1-SNAPSHOT.jar
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Murilo Albuquerque — foco em Backend Java com Spring Boot.
Selected from shared topics, language and repository description—not editorial ratings.
juliana-barreto /
API RESTful de E-commerce desenvolvida com Spring Boot, PostgreSQL e Swagger.
FelipeDeMoraes19 /
API RESTful para gerenciamento de produtos desenvolvida para o Bootcamp da DIO, implementando as práticas de desenvolvimento Java com Spring Boot.
pacamole /
API RESTful de gerenciamento de estoque desenvolvida com Java 21 e Spring Boot 3.4. Inclui arquitetura em camadas, validações, testes unitários, DTOs e documentação Swagger
maiconalmeida00 /
API RESTful desenvolvida em Java com Spring Boot e MongoDB, como parte do curso Java COMPLETO – Programação Orientada a Objetos + Projetos, do professor Nélio Alves. O projeto implementa operações CRUD completas, relacionamentos entre documentos, DTOs, tratamento global de exceções e consultas personalizadas com @Query.
dbreskovit /
API RESTful desenvolvida durante teste de Recrutamento para a empresa Unisoma.
CauZy-Goes /
Esta API RESTful foi desenvolvida para gerenciar solicitações de uso de espaços físicos em instituições, permitindo que professores realizem pedidos e gestores façam avaliações com controle total. Construída com Java 21 e Spring Boot 3, a aplicação implementa autenticação e autorização com OAuth2 e JWT.