https://github.com/iamandaleao/banco-api
API REST para gestão de operações bancárias desenvolvida com Java 21 e Spring Boot 3. Implementa arquitetura em camadas, validações de negócio, persistência com JPA/Hibernate e integração com PostgreSQL na nuvem. Incluindo CRUD completo de clientes com validações de dados e estrutura preparada para contas bancárias e transações financeiras.
https://github.com/iamandaleao/banco-api
backend hibernate java jpa maven postgresql rest-api spring-boot
Last synced: about 2 months ago
JSON representation
API REST para gestão de operações bancárias desenvolvida com Java 21 e Spring Boot 3. Implementa arquitetura em camadas, validações de negócio, persistência com JPA/Hibernate e integração com PostgreSQL na nuvem. Incluindo CRUD completo de clientes com validações de dados e estrutura preparada para contas bancárias e transações financeiras.
- Host: GitHub
- URL: https://github.com/iamandaleao/banco-api
- Owner: iamandaleao
- Created: 2025-11-06T14:08:01.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-12-04T22:54:46.000Z (7 months ago)
- Last Synced: 2025-12-08T04:37:21.006Z (7 months ago)
- Topics: backend, hibernate, java, jpa, maven, postgresql, rest-api, spring-boot
- Language: Java
- Homepage:
- Size: 38.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🏦 API de Gestão Bancária
Sistema backend para gerenciamento de operações bancárias desenvolvido com Java e Spring Boot, com foco em boas práticas de desenvolvimento e arquitetura em camadas.
## 📋 Sobre o Projeto
Este projeto foi desenvolvido como parte do meu portfólio de backend, demonstrando conhecimentos em:
- Desenvolvimento de APIs RESTful
- Persistência de dados com JPA/Hibernate
- Validações de negócio
- Integração com banco de dados PostgreSQL
- Arquitetura em camadas (Model, Repository, Service, Controller)
## 🚀 Tecnologias Utilizadas
- **Java 21** - Linguagem de programação
- **Spring Boot 3.5.7** - Framework para desenvolvimento de aplicações Java
- **Spring Data JPA** - Camada de persistência e acesso a dados
- **PostgreSQL** - Banco de dados relacional (Supabase)
- **Hibernate** - ORM (Object-Relational Mapping)
- **Lombok** - Redução de código boilerplate
- **Bean Validation** - Validações de entrada de dados
- **Maven** - Gerenciamento de dependências
## 📦 Funcionalidades Implementadas
### Gestão de Clientes
- Cadastro de clientes com validações
- Listagem de todos os clientes
- Busca de cliente por ID
- Busca de cliente por CPF
- Atualização de dados do cliente
- Exclusão de cliente
- Validação de CPF e email únicos
## 🏗️ Arquitetura
O projeto segue o padrão de arquitetura em camadas:
```
src/main/java/com/bancoapi/banco_api/
├── model/ # Entidades JPA (Cliente)
├── repository/ # Interfaces de acesso ao banco de dados
├── service/ # Regras de negócio
└── controller/ # Endpoints da API REST
```
### Camadas do Projeto
**Model (Entidades):**
- Representação das tabelas do banco de dados
- Anotações JPA para mapeamento objeto-relacional
- Validações de campos
**Repository:**
- Interface que estende JpaRepository
- Métodos customizados de consulta ao banco
- Abstração do acesso a dados
**Service:**
- Lógica de negócio da aplicação
- Validações complexas (CPF duplicado, email em uso)
- Orquestração entre repositories
**Controller:**
- Exposição dos endpoints REST
- Mapeamento de requisições HTTP
- Tratamento de respostas (status codes)
## 🔌 Endpoints da API
### Clientes
| Método | Endpoint | Descrição |
|--------|----------|-----------|
| POST | `/api/clientes` | Criar novo cliente |
| GET | `/api/clientes` | Listar todos os clientes |
| GET | `/api/clientes/{id}` | Buscar cliente por ID |
| GET | `/api/clientes/cpf/{cpf}` | Buscar cliente por CPF |
| PUT | `/api/clientes/{id}` | Atualizar dados do cliente |
| DELETE | `/api/clientes/{id}` | Excluir cliente |
### Exemplo de Requisição - Criar Cliente
**POST** `/api/clientes`
```json
{
"nome": "Maria Silva",
"cpf": "12345678901",
"email": "maria@email.com",
"telefone": "47999887766",
"dataNascimento": "1995-05-20"
}
```
**Resposta (201 Created):**
```json
{
"id": 1,
"nome": "Maria Silva",
"cpf": "12345678901",
"email": "maria@email.com",
"telefone": "47999887766",
"dataNascimento": "1995-05-20"
}
```
## ⚙️ Como Executar o Projeto
### Pré-requisitos
- Java 17 ou superior
- Maven 3.6+
- Conta no Supabase (ou PostgreSQL local)
### Configuração
1. Clone o repositório
```bash
git clone
cd banco-api
```
2. Configure o banco de dados em `src/main/resources/application.properties`:
```properties
spring.datasource.url=jdbc:postgresql://[SEU_HOST]:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=[SUA_SENHA]
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
```
3. Execute o projeto:
```bash
mvn spring-boot:run
```
4. A API estará disponível em: `http://localhost:8080`
## 🧪 Testando a API
Utilize ferramentas como Postman, Insomnia ou cURL para testar os endpoints.
**Exemplo com cURL:**
```bash
curl -X POST http://localhost:8080/api/clientes \
-H "Content-Type: application/json" \
-d '{
"nome": "João Silva",
"cpf": "98765432100",
"email": "joao@email.com",
"telefone": "11987654321",
"dataNascimento": "1990-01-15"
}'
```
## 📚 O Que Aprendi
Durante o desenvolvimento deste projeto, consolidei conhecimentos em:
- **Spring Boot:** Configuração, injeção de dependências, e criação de APIs REST
- **JPA/Hibernate:** Mapeamento objeto-relacional, relacionamentos e consultas
- **Validações:** Bean Validation para garantir integridade dos dados
- **Arquitetura:** Separação de responsabilidades em camadas
- **Boas Práticas:** Nomenclatura, organização de código e tratamento de exceções
- **PostgreSQL:** Modelagem de banco de dados relacional
- **Cloud Database:** Integração com Supabase
## 📝 Status do Projeto
🚧 **Em desenvolvimento** - Versão inicial com CRUD de clientes implementado