Este projeto é uma API RESTful completa para gerenciamento de pedidos de uma loja, simulando um ecossistema real de e-commerce.
O objetivo principal foi desenvolver uma aplicação robusta utilizando as melhores práticas do ecossistema Spring Boot 3 e Java 21, focando em:
- Arquitetura em Camadas (Controllers, Services, Repositories).
- Tratamento de Exceções Global para respostas HTTP adequadas.
- Padrão DTO (Data Transfer Object) para segurança e desacoplamento da entidade.
- Injeção de Dependência via construtor (Best Practice).
- Mapeamento Objeto-Relacional (ORM) complexo (Many-to-Many com atributos extras).
- Java 21 (LTS)
- Spring Boot 3.4.2
- Spring Data JPA / Hibernate
- Banco de Dados: SQL Server (Produção) / H2 Database (Testes)
- Maven (Gerenciamento de dependências)
O sistema resolve o desafio de Associações Many-to-Many com atributos extras (na classe OrderItem), garantindo a integridade dos dados entre Pedidos e Produtos.
Principais Entidades:
User(Cliente)Order(Pedido)Product(Produto)Category(Categoria)Payment(Pagamento 1:1)
- Java 21 ou superior instalado.
- Maven.
- SQL Server (Opcional - o projeto está configurado para rodar com H2 em memória por padrão para testes rápidos).
- Clone o repositório:
git clone https://github.com/SEU-USUARIO/NOME-DO-REPO.git- Entre na pasta:
cd workshop-springboot3-jpa- Execute a aplicação:
./mvnw spring-boot:run- Acesse o Console do Banco de Dados (H2):
- URL:
http://localhost:8080/h2-console - JDBC URL:
jdbc:h2:mem:testdb - User:
sa - Password: (vazio)
- URL:
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /workshop/products |
Lista todos os produtos |
| GET | /workshop/orders/{id} |
Busca pedido por ID (com itens) |
| POST | /workshop/orders |
Cria um novo pedido |
| POST | /workshop/users |
Cria um novo usuário |
Lorenzo Zagallo
