Desenvolvendo Aplicações Web com NetBeans - PDF
Download "Desenvolvendo Aplicações Web com NetBeans"
Rosângela Sophia Mota Ventura
1 Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega
2 Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo das últimas versões. O usuário pode criar desde suas tabelas como até mesmo instruções SQL de forma visual. Usaremos banco de dados MySQL.
3 Introdução ao JDBC JDBC é uma API incluída dentro da linguagem Java para acesso a banco de dados. Consiste em um conjunto de classes e interfaces escritas em Java que oferecem uma completa API para a programação com banco de dados, portanto é uma solução 100% Java. JDBC é uma especificação formada por uma coleção de interfaces e classes abstratas, que devem implementar todos os fabricantes de drivers que queiram realizar uma implementação de seu driver 100% Java e compatível com JDBC.
4 Introdução ao JDBC Devido ao JDBC ser escrito completamente em Java também passa a ter a vantagem de ser independente de plataforma. Sendo assim, não será necessário escrever um programa para cada tipo de banco de dados, uma mesma aplicação escrita utilizando JDBC poderá trabalhar com banco de dados como Oracle, Sybase, SQL Server, MySQL, Firebird, PostgreSQL e etc. Para que isso aconteça, basta alterar o JDBC referente ao banco de dados usado e o seu sistema passará a se comunicar com o banco de dados configurado.
5 MySQL e JDBC Após instalar o MySQL vamos criar a seguinte estrutura: Banco: biblioteca Tabela: livros Usuário: joao Senha: id int not null auto_increment;, titulo varchar(50), edicao tinyint(2), publicacao int
6 Baixando o driver JDBC O driver JDBC é a ponte necessária para a conexão com o MySQL. Esse arquivo está compactado em JAR e é chamado de Connector/J, que você poderá baixar no site O NetBeans já possui internamente o suporte ao Driver JDBC Mysql
7 UTILIZANDO O DRIVER JDBC NO NETBEANS Na janela Serviços expanda o nó do item Banco de Dados. Clique com o direito do mouse sobre o item Drivers e selecione no menu de contexto o único item: Novo Driver
8 UTILIZANDO O DRIVER JDBC NO NETBEANS SE CONECTANDO AO BANCO DE DADOS o O NetBeans possibilita a conexão ao banco de dados pela IDE, tornando acessível sua manipulação. Na janela Serviços clique com o direito do mouse sobre o item Banco de Dados e selecione no menu de contexto o item Nova Conexão.
9 UTILIZANDO O DRIVER JDBC NO NETBEANS SE CONECTANDO AO BANCO DE DADOS o o No campo Database URL perceba que boa parte já está preenchido. Digite o restante como mostrado a seguir: jdbc:mysql://localhost:3306/livraria
10 UTILIZANDO O DRIVER JDBC NO NETBEANS SE CONECTANDO AO BANCO DE DADOS Podemos trabalhar com as tabelas diretamente do Netbeans.
11 UTILIZANDO O DRIVER JDBC NO NETBEANS Você deve ter percebido que alguns tipos de dados (em Data type) não existem como os do MySQL. Por isso, para completar a criação da tabela, você vai colocar os comandos a seguir, em SQL Command (menu de contexto, Execute Command): alter table livros modify id int auto_increment; Para confirmar a execução, clique no botão Run SQL (Ctrl+Shift+E).
12 Utilizando Padrões de Desenvolvimento (Design Patterns) Em uma página JSP o correto é conter apenas o mínimo possível de scriptlets. Padrão praticado em aplicações WEB em Java: MODEL 2 Baseado no paradigma MVC (Model-View- Controller) Quanto ao acesso ao BD Padrão popularmente usado: DAO (Data Access Object)
13 Utilizando Padrões de Desenvolvimento (Design Patterns) O que é MVC? MVC é um conceito (paradigma) de desenvolvimento e design que tenta separar uma aplicação em três partes distintas. Uma parte, a Model, está relacionada ao trabalho atual que a aplicação administra. Outra parte, a View, está relacionada a exibir os dados ou informações dessa aplicação. A terceira parte, Controller, coordena os dois anteriores exibindo a interface correta ou executando algum trabalho que a aplicação precisa completar.
14 Utilizando Padrões de Desenvolvimento (Design Patterns) MODEL: O Model (Modelo) é o objeto que representa os dados do programa. Maneja esses dados e controlam todas suas transformações. Esse modelo não tem conhecimento específico dos controladores (controller) e das apresentações (views), nem sequer contém referência a eles. Portanto, o Model são as classes que trabalham no armazenamento e busca de dados. Por exemplo, um cliente pode ser modelado em uma aplicação, e pode haver vários modos de criar novos clientes ou mudar informações de um relativo cliente.
15 Utilizando Padrões de Desenvolvimento (Design Patterns) VIEW: A View (Apresentação) é o que maneja a apresentação visual dos dados representados pelo Model. Em resumo, é a responsável por apresentar os dados resultantes do Model ao usuário. Por exemplo, uma Apresentação poderá ser um local administrativo onde os administradores se logam em uma aplicação. Cada administrador poderá visualizar uma parte do sistema que outro não vê.
16 Utilizando Padrões de Desenvolvimento (Design Patterns) CONTROLLER: O Controller (Controlador) é o objeto que responde as ordens executadas pelo usuário, atuando sobre os dados apresentados pelo modelo, decidindo como o Modelo deverá ser alterado ou deverá ser revisto e qual Apresentação deverá ser exibida. Por exemplo, o Controlador recebe um pedido para exibir uma lista de clientes interagindo com o Modelo e entregando uma Apresentação onde esta lista poderá ser exibida.
17 Utilizando Padrões de Desenvolvimento (Design Patterns) Resumindo: A separação lógica da aplicação nestas partes assegura que a camada Modelo não sabe nada praticamente do que é exibido; restringida por representar as partes de componentes do problema que é resolvido pela aplicação. Igualmente, a camada de Apresentação só está relacionada a exibir os dados e não com o implementar lógica de negócios que é controlada pela camada Modelo. O Controlador, como um gerenciador de tráfego, dirige as apresentações a serem exibidas e com as devidas mudanças de dados e recuperações vindas da camada Modelo.
18 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 1: A primeira arquitetura, conhecida como Model 1, é muito comum no desenvolvimento de aplicações Web, chamada de page-centric. Esta arquitetura fornece o modo mais fácil de reunir uma aplicação Web. Envolve simplesmente a construção de uma aplicação como um conjunto de páginas JSP.
19 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 1:
20 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 1: 1. O usuário pede uma página de Web por exemplo, a página principal, index.jsp 2. O container Servlet executa a lógica contida na página index.jsp como também inclui páginas para que se possa apontar. Esta execução pode incluir a recuperação de dados de um banco de dados ou outras funções que satisfaçam à lógica de negócios. Os JavaBeans fornecem as representações de dados dentro da página JSP. 3. Unido junto à lógica de negócios da página, serão confeccionadas e apresentadas o HTML ao usuário. 4. Como resultado do processo, é construído o HTML final e exibido ao usuário.
21 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 2: O Model 1, é indicada para uma aplicação pequena, que contém um limitado número de usuários e possui pouca lógica de negócios, principalmente por ser simples e efetiva. Porém, em uma aplicação mais complexa, onde a lógica de negócios não só é mais detalhada, mas a lógica de exibição necessária também é significantemente grande, uma arquitetura de desenvolvimento baseada no Modelo 1 fará com que seja um tanto bagunçado o montante de códigos desenvolvidos.
22 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 2: Quando você coloca a lógica de negócios em um modelo simples de desenvolvimento, uma repetição de código acaba ocorrendo (isso é muito comum no desenvolvimento de outras linguagens de programação Web cujos conceitos de desenvolvimento não estão fortemente agregados). Isso impossibilita uma rápida manutenção e evidentemente, em um crescimento da aplicação, não haverá uma possível extensão. E isso porque não estamos contando com o fator de testes.
23 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 2: Desafiado por estas desvantagens óbvias, os desenvolvedores identificaram uma arquitetura mais sofisticada que usa Servlets e páginas JSP. Esta arquitetura fora batizada de Model 2 (Modelo 2), que está baseada em uma adaptação da arquitetura MVC. Nessa implementação, um Servlet é usado como um Controlador, recebendo pedidos do usuário, enquanto efetuando mudanças no Modelo, e fornecendo a Apresentação ao usuário.
24 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 2:
25 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 2: 1. Um pedido é feito a um Servlet através da URL. No pedido há uma indicação do trabalho a ser executado. Por exemplo, na URL você pode ter algo como: /Livraria?action=mostrarAutores, onde actionrepresenta o trabalho que a camada Controlador deve empreender. 2. A camada Controlador recebe o pedido e determina o trabalho baseando-se no pedido. Essa camada executa chamadas à camada Modelo que empreende a lógica de negócios exigida. 3. A camada Modelo é instruída a fornecer uma lista de objetos de Livros pelo Controlador. Este, por sua vez, pode acessar algum tipo de camada persistente, como um banco de dados.
26 Utilizando Padrões de Desenvolvimento (Design Patterns) Model 2: 4. Para a camada Controlador é proporcionada a lista de objetos de Livros para serem exibidos na camada de Apresentação. A camada Controlador também determina a apresentação apropriada para fornecer ao usuário. Usando um despachante de pedidos, o Servlet pode fornecer a lista de objetos Livros à camada de Apresentação selecionada (página JSP mais indicada). 5. A camada de Apresentação tem uma referência agora aos dados fornecidos e faz a exibição da lista conforme sua lógica definida.
27 Utilizando Padrões de Desenvolvimento (Design Patterns) O Padrão DAO (Data Access Object): O padrão DAO (Data Access Object) é o padrão mais utilizado para acesso a dados contidos em um banco de dados. O Padrão DAO fornece uma interface independente, no qual você pode usar para persistir objetos de dados. A ideia é colocar todas as funcionalidades encontradas no desenvolvimento de acesso e trabalho com dados em um só local, tornando simples sua manutenção. Tipicamente um DAO inclui métodos para inserir, selecionar, atualizar e excluir objetos de um banco de dados. Dependendo de como você implementa o padrão DAO, você poderá ter um DAO para cada classe de objetos em sua aplicação ou poderá ter um único DAO que é responsável por todos os seus objetos.
28 Criando um projeto com padrões Crie um novo projeto no NetBeans IDE. Chame-o de TrabComPadroes. Adicione as bibliotecas: JDBC MySQL e JSTL Vá em Serviços e conecte-se em Livraria Crie a tabela autores Id int not null (pk) Nome varchar(50) varchar(100) Nascimento date
29 Após a criação da tabela o código abaixo deverá ser executado para tornar o id como auto incremento: (botão direito sobre autores executar comando)
30 Fábrica de Conexão Criar nova classe Java Botão direito sobre o projeto novo Classe Java Dê o nome FabricaConexao
31 Statement homologação, confirmação Catch pegar, capturar Throws jogar, lançar
32 O JavaBean Autor, Source e Refactor O JavaBean Autor será desenvolvido para ser acessado por sua aplicação, conforme você viu na explicação técnica dada no Model 2. Este Bean receberá os dados vindos do BD para transmitir a sua página JSP. Da sua página JSP ele também receberá dados, para transmiti-los ao BD, no que, como você pode ver, é um intermediário nas transações de dados. Crie uma classe Java com o nome de Autor. Adicione o código mostrado a seguir:
33 O Bean Autor.java
34 Source Com o direito do mouse no Editor, no menu de contexto. Selecione o item Inserir Código ou Alt+Insert Clique em Construtor Faça este processo duas vezes. Uma vez marcando todos os parâmetros e outra não.
35 Refactor (Refatorar) Vá ao menu Refatorar Encapsular Campos
36 Manipulando a tabela Autores Agora o problema é criar os modelos necessários par encapsular as cláusulas SQL, isolando assim em um ponto, gerando uma camada. O DAO com os métodos necessários para a comunicação com o BD será gerado por uma nova classe chamada AutorDAO. Vamos criar uma nova classe Java com o nome AutorDAO e inserir o código a seguir para os seguintes métodos: AutorDAO() //construtor atualizar() Salvar() Excluir() todosautores() procurarautor()
43 Criar Interface dos métodos criados Menu Refatorar Extrair Interface
44 Para facilitar a localização de uma classe que implementa uma interface, costumamos colocar um nome com Imp ao seu final. A classe AutorDAO ficaria AutorDAOImp. Clique com o botão direito sobre a classe Refatorar Renomear
45 Testando seu DAO Uma boa prática no desenvolvimento é testar classes para verificar a assertividade e consequentemente evitar erros futuros por falhas ocorridas em etapas preliminares. A classe DAO desenvolvida faz o que chamamos de CRUD (Create Read Update Delete), ou seja, ela opera em quatro situações no banco de dados. Quando você cria um projeto, automaticamente o NetBeans adiciona em sua árvore um diretório chamado de Test Libraries contendo duas bibliotecas: Junit 3.x e JUnit 4.x. JUnit, é um framework open source, criado para fazer testes automatizados, chamados de test cases.
46 Para iniciar a criação da classe de testes, selecione a classe AutorDAOImp e vá até o menu Ferramentas e clique no item Criar/Atualizar Testes (Ctrl+Shif+U).
47 Altere a classe de acordo com os códigos abaixo.
49 Para completar o teste clique com botão direito sobre a classe AutorDAOImpTest.java e selecione Executar arquivo ou Testar Arquivo.
50 Utilizando o DAO Para utilizar esse padrão, o DAO, iremos criar um sistema simples, com a possibilidade de SELECIONAR, INSERIR, ATUALIZAR, e EXCLUIR dados da tabela autores. Primeiro crie um Servlet que acessará o DAO, chamado de ServletAutores. Insira o código fonte a seguir:
55 Esse Servlet criado tem que captar o comando (representado pelos caracteres cmd) para que seja decidida qual ação tomar de acordo com a chamada. Caso o valor seja nulo, o comando é alterado para uma String chamada principal.
56 A interface do DAO criada é chamada, assim como o Bean Autor, no trecho a seguir: Fazendo isso, podemos utilizar o DAO para executar a ação desejada, assim como utilizar o Bean para modificar alguma informação existente no banco de dados ou transmitir alguma informação passada pelos formulário que iremos criar ainda. De qualquer forma, os dados passados deverão ser recuperados. Isso é feito usando o já conhecido request.getparameter(string s)