Configuração do Ambiente de programação. Manipulação de BD em Java, CRUD em Java Desenvolvimento de Aplicações Web PROFA. MSC. CINTIA CARVALHO OLIVEIRA DOUTORANDA EM CIÊNCIA DA COMPUTAÇÃO – UFU MESTRE EM CIÊNCIA DA COMPUTAÇÃO – UFU BACHAREL EM CIÊNCIA DA COMPUTAÇÃO - UFJF Acesso ao Banco de Dados Diferentes bancos de dados possuem diferentes formas de se comunicar com uma aplicação. Aplicação Oracle SQL Server MySQL Isso causa um problema na codificações e manutenção, pois caso precise trabalhar um novo banco de dados o código deverá ser refeito. A aplicação fica inflexível. A conexão em java Para evitar que cada banco tenha a sua própria API e conjunto de classes e métodos, temos um conjunto de interfaces muito bem definidas que fica dentro de java.sql chamada JDBC – Java DataBase Connectivity. 3 JDBC A API JDBC uniformiza o acesso ao banco de dados, dando maior flexibilidade aos sistemas. Aplicação JDBC Oracle SQL Server MySQL A conexão Java Temos a interface Connection que define métodos para executar uma query (como um insert e select), comitar transações, fechar a conexão entre outros. Para trabalhar com o MySQL, por exemplo, precisamos de classes concretas que implementem essas interfaces do pacote java.sql. Essas classes são a ponte entre o código que usa a API JDBC e o banco de dados. Esse conjunto de classes recebe o nome de driver. 5 A conexão Java Para abrir uma conexão sempre precisamos de um driver. A classe DriverManager é responsável por se comunicar com todos os drivers que você disponibilizou, utilizando o método estático getConnection. A String de conexão é da seguinte forma: jdbc:mysql://ip/nome_do_banco 6 Arquitetura da JDBC Aplicação Java API JDBC JDBC DRIVER MANAGER DRIVER JDBC DRIVER JDBC MySQL Oracle Arquitetura da JDBC As principais classes e interfaces do pacote java.sql são: ◦ DriverManager – gerencia os drivers e cria uma conexão com o banco ◦ Connection – é a classe que representa a conexão com o banco de dados. ◦ Statement – controla e executa uma instrução SQL ◦ PreparedStatement – controla e executa uma instrução SQL. Mais segura. ◦ ResultSet – contém o conjunto de dados retornado por uma consulta SQL O DriverManager com base em qual driver chamar usa o getConnection para criar uma conexão. A interface Connection cria um PreparedStatement, faz commit, rollback, etc; Executando ocorre uma exception. A conexão não pode ser aberta. Precisamos adicionar uma implementação de driver JDBC. E criar um BD chamado estoque. Adicionar um driver do MySQL ao classpath, o arquivo jar contendo a implementação JDBC do MySQL (mysql connector). 9 Algumas exceptions JDBC ClassNotFoundException (Erro de classe não encontrada) ◦ falta do driver no projeto SQLException – No suitable driver found for (erro do nome do driver) ◦ A URL de conexão foi construída errada Fábrica de Conexões Para controlar um processo muito repetitivo e trabalho, fazemos uma fábrica de conexões, que é um Desing Pattern chamado de Factory. Os programadores para adquirir uma conexão deverão executar: Connection com = new ConnectionFactory().getConnection(); 11 Projeto Crie um novo projeto chamado Estoque. Copie o driver do MySQL para a biblioteca do seu projeto. Crie uma tabela no BD Estoque chamada Produto: 12 Javabeans ◦ Javabeans são classes que possuem construtor sem argumentos e métodos de acesso get e set. ◦ EJBs costumam ser javabeans com características mais avançadas. ◦ Classe javabean equivalente ao modelo de entidade do banco de dados. 13 14 DAO – Data Access Object A ideia é remover o código de acesso ao banco de dados das classes lógicas e colocá-lo em uma classe responsável pelo acesso aos dados. Assim o código fica em um lugar só, tornando mais fácil a manutenção. Geralmente possui as operações CRUD ◦ Create ◦ Read ◦ Update ◦ Delete 15 ProdutoDAO 16 Método de cadastrar 17 Testar cadastro 18 Exercício Crie um método de alteração dentro da classe ProdutoDAO em seguida teste o método através da classe TestarAltera. 19 Leituras Banco de Dados e JDBC ◦ http://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/ Livro: Programação Java para a Web Capítulo 3. Introdução a Hibernate e SQL com Java Páginas 107 a 119