Skip to content

TCarvalhoLeandro/le_books-jdbc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 LeBooks - Library System

Java Apache_Maven JDBC MySQL Ubuntu Repository Pattern MVC

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.

🚀 Evolução Técnica

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.

🛠️ Tecnologias Utilizadas

  • Linguagem: Java
  • Persistência: JDBC (Java Database Connectivity)
  • Banco de Dados: MySQL
  • Driver: MySQL Connector
  • Arquitetura: MVC com Repository Pattern

🏗️ Arquitetura e Padrões de Projeto

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.

⚙️ Como Executar o Projeto

  1. Clone o repositório:

    git clone https://github.com/TCarvalhoLeandro/library-manager-JDBC.git
    
  2. Configure o Banco de Dados:

    Abra o seu banco de dados (MySQL Workbench/DBeaver).

    Execute o script database/cria_e_popula.sql para criar o banco e inserir os dados de teste.

    Configure as credenciais de acesso (URL, User, Password) no arquivo db.properties.

  3. Importe o Driver:

    Certifique-se de que o .jar do MySQL Connector está adicionado ao Classpath do projeto.

  4. Execute:

    Rode a classe Main.java para iniciar o menu interativo no terminal.


💡 Aprendizado

🗄️ Migração para Banco de Dados Relacional (MySQL)

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.xml para gerenciar o MySQL Connector/J, eliminando a necessidade de baixar e configurar arquivos .jar manualmente 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 ResultSet para 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.

💻 Resultado

Resultado do LeBooks Resultado do LeBooks Resultado do LeBooks Resultado do LeBooks


📌 Sugestões

Fique a vontade para entrar em contato:

LinkedIn


Leandro Carvalho

About

Projeto pessoal de aprendizado: Sistema gerencial de biblioteca com persistência em MySQL via JDBC. Implementação de arquitetura DAO sem frameworks para domínio de lógica e SQL.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages