Skip to content

Implementation of a CRUD through the DAO architecture using JDBC

Notifications You must be signed in to change notification settings

tiagosathler/demo-dao-jdbc-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Demo DAO JDBC

Exercício de demonstração de um CRUD usando o padrão DAO com JDBC

Introdução

Exercício assistido e desenvolvido durante o Curso de Java Completo da plataforma Udemy através do Linkedin Prof. Dr. Nelio Alves. O repositório das minhas atividades no curso podem ser acessados aqui.

O objetivo deste exercício é implementar manualmente um CRUD (create/read/update/delete) completo de um simples banco de dados utilizando o padrão DAO (Data Acess Object) e o JDBC (Java Database Connectivity).

Design do exercício

O JDBC é API padrão do Java para acesso a dados. Vamos utilizar o MySQL como banco de dados e sua respectiva biblioteca de driver para o JDBC.

O padrão DAO é surgiu com a necessidade de separarmos a lógica de negócios da lógica de persistência de dados. Este padrão permite que possamos mudar a forma de persistência sem que isso influencie em nada na lógica de negócio, além de tornar as classes mais legíveis (fonte: DevMedia - DAO Pattern: Persistência de Dados utilizando o padrão DAO).

Então as classes DAO são responsáveis por trocar as informações com o SGBD e fornecer operações CRUD e de pesquisas, implementando as queries do DB. Como a lógica de negócio está desacoplada podemos dizer que o DAO está implementado na camada Model. Mas este exercício ainda não é uma API Rest com as camadas Service e Resource ou Controller da arquitetura MSC ou MSR. É apenas uma prática de como se conectar manualmente ao SGBD.

O DB está representado conforme o diagrama relacional a seguir. O script de SQL está disponível aqui.

EER_Diagram

A mesma relação das entidades está representado na forma de um diagrama UML conforme figura a seguir (créditos ao material do curso).

Entities_UML

O exercício implementa o diagrama UML a seguir, na qual pode-se ver o padrão de código Factory como técnica para instanciar os objetos DAO das entidades. Cada uma delas deverá implementar os métodos do CRUD de suas respectivas interfaces.

Design_UML

Ambiente de desenvolvimento e execução

O exercício foi desenvolvido na IDE Eclipse versão 2022-14 (4.26.0), Linux Ubuntu 22.04 LTS e Java OpenJDK 11. Mas pode ser executado também em versões superiores.

Para executar este exercício é necessária a biblioteca do driver MySQL para o JDBC. Utilizei o Connector/J do MySQL para Ubuntu na versão 8.0.31.

O programa executa algumas operações pré-definidas conforme descrito na classe Program. São duas baterias de testes, um para cada entidade Seller e outro para Department. São as implementações a seguir:

1. CRUD para Seller

1.1. findById(id) - busca um seller pelo id igual 3 (fixo); 1.2. findByDepartment(department) - busca todos os sellers de uma entidade department instanciada; 1.3. findAll() - busca por todos os sellers; 1.4. insert(seller) - insere um novo seller instanciado; 1.5. update(seller) - atualizada um seller existente; 1.6. deleteById(id) - apaga um seller pelo id solicitado via prompt.

2. CRUD para Department

2.1. findById(id) - busca um department pelo id = 3 (fixo); 2.2. findAll() - busca por todos os departments; 2.3. insert(department) - insere um novo department instanciado; 2.4. update(department) - atualizada um department existente; 2.5. deleteById(id) - apaga um department pelo id solicitado via prompt.

Antes de executar é necessário ter o MySQL instalado e rodando na máquina. Execute o script para gerar e popular o banco de dados coursejdbc. Além disto, é necessário criar o arquivo db.properties na pasta raiz. Use o arquivo de exemplo db.properties.example, editando-o com suas informações de user e password de acesso ao seu MySQL, bem como a porta de conexão, que por padrão é a 3306.

O programa pode ser executado diretamente do console da IDE. Mas para isto é necessário baixar a biblioteca Connector/J e adicioná-la às bibliotecas de usuário no Eclipse.

Para executar diretamente no terminal, utilize o arquivo exportado do exercício demo-dao-jdbc.jar da pasta exported. A biblioteca Connector/J do MySQL está incluída na exportação. Da pasta raiz do repositório clonado, execute:

java -cp exported/demo-dao-jdbc.jar application.Program

A figura a seguir mostra a um exemplo de execução do programa. Observe que o programa solicitará qual id deseja apagar em cada bateria de teste. Se houver algum department relacionado a algum seller não será possível apagá-lo, e o programa lançará um DbException.

Lembrando que é necessário ter o Java instalado na máquina na versão 11 ou superior e MySQL.

Tela_execução

Carga horária

O exercício foi guiado por 26 videos-aulas do curso, cerca de 2h52m de gravações e atividades de desenvolvimento de aproximadamente 8h17m, entre os dias 5 e 6 de dezembro de 2022.

Wakatime

Conteúdo: Demo DAO JDBC

  1. Classe Department
  2. Classe Seller
  3. Interfaces DepartmentDao e SellerDao
  4. SellerDaoJDBC e DaoFactory
  5. Implementando findById
  6. Reutilizando a instanciação
  7. Implementando findByDepartment
  8. Implementando findAll
  9. Implementando insert
  10. Implementando update
  11. Implementando delete
  12. Implementação e teste do DepartmentDao

About

Implementation of a CRUD through the DAO architecture using JDBC

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages