Este projeto representa o segundo estágio de evolução do Library Management System. Após a implementação inicial utilizando arquivos CSV, esta versão foi refatorada para utilizar o MySQL como motor de persistência, utilizando a API JDBC (Java Database Connectivity). O foco aqui foi garantir a integridade referencial, performance em consultas e o gerenciamento de conexões.
A transição para um banco de dados relacional permitiu resolver limitações críticas do sistema baseado em arquivos:
| Característica | Persistência em CSV | Persistência em MySQL (JDBC) |
|---|---|---|
| Busca de Dados | Varredura sequencial em memória. | Consultas indexadas e otimizadas. |
| Integridade | Manual e propensa a erros de ID. | Chaves Estrangeiras e Restrições (Constraints). |
| Concorrência | Risco de corrupção de arquivo. | Transações seguras (Propriedades ACID). |
| Escalabilidade | Limitada pelo tamanho da RAM. | Suporta milhões de registros com eficiência. |
- Linguagem: Java
- Persistência: JDBC (Java Database Connectivity)
- Banco de Dados: MySQL
- Driver: MySQL Connector
- Arquitetura: MVC com Repository Pattern
O projeto segue os princípios de Inversão de Controle (IoC) e Injeção de Dependência, garantindo que a lógica de negócio seja independente da tecnologia de banco de dados.
- Repository Pattern: Evolução do antigo padrão DAO, tratando a persistência como coleções de objetos de domínio.
- Factory Pattern: Centralização da criação de instâncias de Repositórios, desacoplando a implementação JDBC do restante do sistema.
- Singleton: Aplicado na gestão da conexão com o banco (
DBConnection) para garantir uma única instância do objeto de conexão. - Tratamento de Exceções: Implementação de camadas de captura para
SQLException, convertendo-as em exceções de domínio mais claras para o utilizador.
-
Clone o repositório:
git clone https://github.com/TCarvalhoLeandro/library-manager-JDBC.git
-
Configure o Banco de Dados:
Abra o seu banco de dados (MySQL Workbench/DBeaver).
Execute o script
database/cria_e_popula.sqlpara criar o banco e inserir os dados de teste.Configure as credenciais de acesso (URL, User, Password) no arquivo db.properties.
-
Importe o Driver:
Certifique-se de que o .jar do MySQL Connector está adicionado ao Classpath do projeto.
-
Execute:
Rode a classe Main.java para iniciar o menu interativo no terminal.
Nesta etapa, o armazenamento em arquivos .csv foi substituído por um banco de dados relacional, elevando a confiabilidade, segurança e capacidade de consulta da aplicação. Os principais aprendizados técnicos foram:
-
Gerenciamento de Dependências (Maven):
- Transição de um projeto Java simples para um projeto Maven.
- Utilização do arquivo
pom.xmlpara gerenciar o MySQL Connector/J, eliminando a necessidade de baixar e configurar arquivos.jarmanualmente no classpath.
-
Java Database Connectivity (JDBC):
- Conexão Segura: Gerenciamento do ciclo de vida de conexões com o banco de dados.
- Prevenção contra SQL Injection: Substituição de concatenação de strings em queries pelo uso de
PreparedStatement, garantindo a sanitização dos dados de entrada. - Mapeamento Objeto-Relacional Manual: Uso do
ResultSetpara traduzir os registros retornados pelas tabelas do banco de dados (linhas e colunas) de volta para instâncias das nossas classes de domínio (Objetos Java).
-
Modelagem e Ferramentas de Banco de Dados:
- Uso do MySQL Workbench para o design do esquema do banco de dados, criação de tabelas (DDL) e testes de consultas (DML) localmente.
-
A Prova Prática da Arquitetura (O Poder do DAO):
- A troca da tecnologia de persistência (do CSV para o MySQL) foi facilitada pelo uso prévio das interfaces DAO. Criamos novas implementações focadas no banco de dados, enquanto a camada de serviços (
.services) permaneceu intacta, comprovando o sucesso do baixo acoplamento.
- A troca da tecnologia de persistência (do CSV para o MySQL) foi facilitada pelo uso prévio das interfaces DAO. Criamos novas implementações focadas no banco de dados, enquanto a camada de serviços (
Fique a vontade para entrar em contato:
Leandro Carvalho



