Curso Técnico em Informática – 4º. Módulo Disciplina de Banco de Dados II Professora Madalena Pereira da Silva Lista de Exercícios Projeto Contatos Objetivo: o objetivo desta lista visa investigar o seu conhecimento sobre a estrutura MVC, o padrão de projeto DAO, e o seu conhecimento na linguagem de programação Orientada a Objetos Java. Questões sobre a classe ConnectionDataBase 1) Em qual classe o método getConnection, da classe ConnectionDataBase, está sendo chamado? 2) Porque o nosso projeto está imprimindo várias vezes a frase: "Conectando ao Banco de Dados"? 3) Como contornar o problema da questão 2, usando o mesmo método getConnection? Questões sobre a classe GenericDao 4) Qual a vantagem de criar a classe GenericDao? E porque a mesma é abstrata? 5) Qual o objetivo de criar um construtor com encapsulamento do tipo protected na classe GenericDao? E o que exatamente está sendo realizado no construtor de GenericDao? 6) Porque foi criado o método getConnection na classe GenericDao? O mesmo é obrigatório? Existe outra forma de usar a variável "conexão", fazendo alguma alteração no código? 7) Porque os métodos (save, update e delete) da classe GenericDao recebem como parâmetro "Object... parametros"? E porque eles são protected? 8) Qual a finalidade da estrutura de repetição (laço for) dentro dos métodos (save, update e delete) na classe GenericDao? 9) Sabe-se que tanto o objeto "Statement" quanto o "PreparedStatement" são usados para enviar comandos SQL ao SGBD. No entanto, no corpo dos métodos (save, update e delete) da classe GenericDao está sendo usado "PreparedStatement", ao invés de "Statement". Qual a diferença de usar um ou outro? Além disso, existe algum ganho ao programador e/ou desempenho para manipular o BD com uso do "PreparedStatement" quando comparado com "Statement"? 10) Apresente um exemplo, com "parte" de código que demonstre as diferenças entre o uso do objeto "Statement" e "PreparedStatement". 11) Em todos os métodos da classe ContatoDao (Salvar, alterar e excluir) está sendo passado como parâmetro aos métodos da super classe (save, update e delete) um string SQL. Observe que em todas as strings SQL tem o uso da interrogação (?). O que exatamente isso significa para os métodos: a) Salvar b) Alterar c) Excluir 12) Porque os métodos (encontrarContatos e procurarPorNome) foram criados na classe ContatoDao, ao invés de serem criados na classe GenericContatoDao? 13) Qual a função do objeto ResultSet dentro dos métodos (encontrarContatos e procurarPorNome), da classe ContatoDao? 14) Qual a função dos seguintes métodos, usados na classe ContatoDao: a) executeQuery b) close: c) next usado no ResultSet Questões sobre a classe ContatoContato 15) A classe contato foi criada no pacote Model. Em qual local, incluindo a criação de um novo pacote, você acha mais apropriado incluir a respectiva classe? Questões sobre a classe ContatoController 16) No nosso projeto, existe a necessidade da criação da classe ContatoController? Justificar a resposta. 17) Em que momento a classe ContatoController se comunica com a classe GenericDao e ContatoDao? Justificar. 18) Porque na classe ContatoController foram criados novos métodos (Salvar, alterar e excluir), se eles já existem em ContatoDao? Questões sobre a classe ContatoFrame 19) Em que momento a classe ContatoFrame se comunica com a classe ContatoController? Justificar. 20) Como a classe ContatoFrame consegue obter acesso aos métodos consultarContatos() e procurarPorNome() da classe ContatoDao? 21) Como foram implementados os métodos: a) onClickExcluir b) onClickAlterar c) onClickSalvar d) onClickLocalizar 22) Como foram implementados os métodos: a) onClickAnterior b) onClickProximo c) onClickPrimeiro d) onClickUltimo 23) De onde o método getValores(), está buscando os dados?