https://github.com/lasbrdev/java-bank-persistence-jdbc
Este projeto é uma aplicação bancária simples em formato de console que simula operações básicas de um banco.
https://github.com/lasbrdev/java-bank-persistence-jdbc
docker docker-compose java linux mysql
Last synced: 2 months ago
JSON representation
Este projeto é uma aplicação bancária simples em formato de console que simula operações básicas de um banco.
- Host: GitHub
- URL: https://github.com/lasbrdev/java-bank-persistence-jdbc
- Owner: lasbrDev
- Created: 2023-11-11T03:41:33.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-26T19:01:46.000Z (over 2 years ago)
- Last Synced: 2025-01-13T17:20:00.724Z (over 1 year ago)
- Topics: docker, docker-compose, java, linux, mysql
- Language: Java
- Homepage:
- Size: 43.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Bank Application with JDBC and Docker
Este projeto é uma aplicação bancária simples que utiliza Java, JDBC para interação com um banco de dados MySQL, e Docker para facilitar o ambiente de desenvolvimento.
## Estrutura do Projeto
O projeto segue a seguinte estrutura de pacotes:
```
├───src
│ ├───main
│ │ ├───java
│ │ │ └───br
│ │ │ └───com
│ │ │ └───lasbr
│ │ │ └───bank
│ │ │ └───domain
│ │ │ ├───account
│ │ │ └───costumer
│ │ └───resources
│ └───test
│ └───java
└───target
├───classes
│ └───br
│ └───com
│ └───lasbr
│ └───bank
│ └───domain
│ ├───account
│ └───costumer
└───generated-sources
└───annotations
```
## Classes Principais
**Conta**
A classe Conta representa uma conta bancária com número, saldo e titular.
**ContaService**
ContaService é responsável por gerenciar as operações relacionadas a contas, como abertura, encerramento, saque e depósito.
**DadosAberturaConta** e **DadosCadastroCliente**
Essas classes contêm dados necessários para abrir uma conta e cadastrar um cliente, respectivamente.
**Cliente**
Representa um cliente com nome, CPF e email.
**RegraDeNegocioException**
Exceção personalizada para representar violações de regras de negócio.
**BankApplication**
A classe principal contendo o menu interativo para operações bancárias.
**ConnectionFactory**
Factory de conexões JDBC para interação com o banco de dados MySQL.
## Banco de Dados
O banco de dados utilizado é o MySQL, e a configuração está definida no arquivo docker-compose.yml.
```yaml
version: '3.8'
services:
mysql:
image: mysql:8.0.28
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: my_mysql_db
MYSQL_PASSWORD: root
ports:
- 3307:3306
```
Abaixo, estão os comandos para rodar a instância do MySQL no Docker:
```bash
# Iniciar o banco de dados MySQL
docker-compose up -d
# Parar o banco de dados MySQL
docker-compose down
```
## Acessando o MySQL
### Usando o MySQL Workbench
Você pode usar o MySQL Workbench para conectar à uma instância do MySQL em execução:
* Host: localhost
* Porta: 3307
* Usuário: root
* Senha: root
### Usando o Terminal
Você também pode usar o terminal para se conectar à instância do MySQL:
```bash
# Conectar ao MySQL
mysql -h localhost -P 3307 -u root -p
```
## Boas Práticas em POO
Além de sempre adotar as boas práticas em orientação a objetos, temos outros conceitos importantes como separação das responsabilidades e, sempre que possível, tentar enxergar se o projeto pode melhorar no sentido de abordar outros aspectos como os principios SOLID.
Até o momento, a aplicação adota principalmente o Princípio Aberto/Fechado (Open/Closed Principle) do SOLID. Este princípio permite estender a funcionalidade da aplicação sem modificar suas classes existentes. Novos serviços bancários ou tipos de contas podem ser adicionados sem alterar diretamente as implementações existentes.
## Status do Projeto
Atualmente, a aplicação é capaz apenas de cadastrar uma conta. Os métodos adicionais, incluindo a persistência de dados no banco de dados, estão em desenvolvimento. Futuras atualizações incluirão funcionalidades adicionais, a conclusão das operações bancárias essenciais, testes abrangentes e tratamento de exceções.
Este projeto é uma obra em andamento, e esforços estão sendo feitos para fornecer uma aplicação robusta, segura e de fácil manutenção. Fique atento para futuras atualizações e melhorias!