Persistência de Classes em Tabelas de Banco de Dados

Propaganda
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
1
Persistência de Classes em Tabelas de
Banco de Dados
1) Introdução
!
Em algumas situações, pode ser necessário preservar os objetos criados em uma
aplicação de maneira permanente. Ou seja, os dados fornecidos pelo usuário devem
poder ser resgatados em uma outra oportunidade ou instante.
!
Uma das maneiras de se “persistir” os dados é armazenar os seus valores em
tabelas de um banco de dados.
!
Pode-se considerar que existem basicamente dois tipos de banco de dados: i) os
banco de dados orientados a objetos e ii) os banco de dados que não são orientados a
objetos. Nesse material é considerado apenas o banco de dados não orientado a objetos.
!
Normalmente, uma classe deverá ter o seu equivalente em forma de tabela,
conforme ilustra a Figura 1. Nesse caso, cada atibuto será uma coluna na tabela, o nome
da tabela será o nome da classe e o nome do banco de dados, o nome do pacote.
Figura 1 - Exemplo de classe: Classe Pessoa e a sua correspondente tabela de
armazenamento de dados.
!
!
Existe também a possibilidade que uma classe tenha o seu atributo armazenado
em diversas tabelas ou que uma tabela armazene informações de mais de uma classe.
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
2
!
2) Exemplo Prático - Como criar uma tabela.
!
Como exemplo prático, a classe exemplificada na Figura 2 terá os seus parâmetros
persistidos em uma tabela do banco de dados. Na Figura 2, apenas os atributos da classe
estão representados.
Figura 2 - Exemplo de classe: Classe Pessoa
!
De maneira reduzida, os passos a serem seguidos são dois a saber:
* criar uma base de dados
* criar uma tabela com os atributos da classe
2.1 Procedimentos detalhados no ambiente NetBeans.
1) No ambiente NetBeans, selecione a guia de serviços ou “service”, conforme ilustra a
Figura 3. De acordo com a sua opção de instalação e “plugins” instalados, a sua interface
poderá conter mais ou menos elementos na lista da Figura 3. Para o exemplo descrito
neste material, há a necessidade da presença do elemento “Databases”. Na Figura 3,
esse é o primeiro elemento da lista de serviços .
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
3
Figura 3 - Aba Service do ambiente NetBeans que permite acessar, entre outras
coisas, uma pequena interface de manipulação de Banco de Dados.
2) Com um clique no elemento “Databases” da lista, a seguinte janela se abrirá:
Figura 4 - Opções do elemento databases.
!
A lista apresentada na Figura 4 descreve uma pequena amostra do banco MySQL
(se ele estiver instalado em seu computador) e do banco de dados “Java DB”. Esses
bancos devem ter sido instalados de maneira automática durante a instalação do próprio
NetBeans.
!
Para persistir os dados de uma classe, iremos guardar os dados no banco de
dados “Java DB”. Antes de definir a tabela que armazenará os dados, há a necessidade
de definir uma base de dados ou um “database”.
3) Com um clique do botão direito do mouse no elemento “Java DB”, selecione a opção
“create database” conforme ilustrado na Figura 4.
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
4
Figura 4 - Opção de Criar Database.
4) Após selecionado essa opção, uma nova janela será apresentada. Nessa janela,
ilustrada na Figura 5, o desenvolvedor necessita especificar o nome do Banco de Dados
(Database Name), quem terá acesso ao banco (User Name) de dados e a senha de
acesso (Password).
Figura 5 - Definição do nome da base de dados.
!
Conforme sugerido, na Figura 5, o nome escolhido para a base de dados foi
“academico”. Feito isso, o ambiente irá refletir essa operação, conforme ilustrado na
Figura 6. Conforme destacado na Figura 6, a base de dados criada gera duas novas
informações na lista: 1) Academico e 2) “jdbc:derby://localhost:1527/academico ...”.
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
5
Figura 6 - Relação entre a base de dados criada e o driver utilizado
5) Para criar uma tabela, basta clicar na opção “jdbc:derby://localhost:1527/academico... |
Tables ”. A Figura 7 apresenta a estrutura que será apresentada:
Figura 7 - Acesso a Tabelas, Views e Procedures do banco de dados
!
Após isso, com um clique com o botão direito do mouse no elemento “Tables” o
menu “popup” para a criação de uma tabela será apresentado. Um exemplo do menu
pop-up é apresentado na Figura 7.
!
Como exemplo, será criada uma tabela Pessoa que corresponde à classe Pessoa
ilustrada na Figura 1. Para fazer isso, selecione a opção “Execute Command...”, conforme
ilustra a Figura 8 a seguir.
Figura 7 - Opção para enviar instruções diretamente ao banco de dados.
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
6
!
!
Na janela de edição que aparecerá, digite digite as seguintes instruções, conforme
ilustra a Figura 9.
Figura 9 - Instrução na linguagem SQL para a criação da tabela Pessoa.
6) Clique no botão “Run SQL” para eexecutar a instrução.
Figura 10 - Botão “Run SQL”.
3. Como criar uma aplicação java para acessar a tabela.
1) No NetBeans, selecione “Novo Projeto” e a opção “Java | Java Application”, conforme
ilustra a Figura 11.
Figura 11 - Interface de definição de aplicação
2) Defina as características da sua aplicação. A Figura 12 exemplifica essas opções.
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
7
Figura 12 - Exemplo de configuração de uma aplicação java
3) A seguir, crie uma nova classe. Essa nova classe será responsável por acessar o
banco de dados.
!
No pacote “acessabd”, clique com o botão direito do mouse e selecione as opções
“New | Java Class...”, conforme ilustrado na Figura 13.
Figura 13 - Criação de uma nova classe.
!
Essa nova classe será a classe denominada Conecta. O código dessa classe que
permite a conexão com o banco de dados é apresentado a seguir.
package acessabd;
import java.sql.*;
public class Conecta {
private Connection con;
private Statement stm;
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
8
private String bd = "jdbc:derby://localhost:1527/ACADEMICO";
private String driver = "org.apache.derby.jdbc.ClientDriver";
private String usuario="noronha";
private String senha="noronha";
private String database="Academico";
public void open( )
{
try
{ Class.forName(driver);
con = DriverManager.getConnection(bd,usuario,senha);
stm = con.createStatement();
}
catch(java.lang.Exception e) {System.out.println(e);}
}
public void close( )
{ if ((stm != null) && (con != null))
try { stm.close( ); con.close( ); }
catch (java.sql.SQLException e){System.out.println(e);}
}
public void executeMe(String comando)
{ try {open();
stm.executeUpdate(comando);
close();}
catch(java.lang.Exception e)
{System.out.println(e);
close( );
}
}
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
9
public String listAll()
{ String saida = "";
ResultSet consulta;
try{ open();
consulta = stm.executeQuery(
"select * from Academico.pessoa");
while (consulta.next())
{ saida += "\n\n*************************************";
saida += "\n Nome = " + consulta.getString("nome");
saida += "\n Codigo = " + consulta.getString("codigo");
saida += "\n Cidade de nascimento = "
+ consulta.getString("cidade_de_nascimento");
saida += "\n Documento de Identidade = "
+ consulta.getString("DocId");
saida += "\n Tipo do Documento = "
+ consulta.getString("tipoDoc");
}
}
catch(java.sql.SQLException e)
{System.out.println(e); close(); return null; }
close(); return saida;
}
}
4) Na classe Main, o código ilustrado a seguir deverá ser digitado na classe principal:
package acessabd;
public class Main {
public static void main(String[] args) {
Conecta c = new Conecta( );
c.open();
String comando = "insert into academico.pessoa "
+ " ( nome, cidade_de_nascimento, docid, tipoDoc)"
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
10
+ " values (1,\"Maria Joana \", \"Curitiba\" "
+ ", \"11111\", 0) ; ";
c.executeMe(comando);
System.out.println("\n"+comando);
System.out.println(c.listAll());
c.close();
System.out.println("fim");
}
}
5) A Figura 14 a seguir, ilustra um possível errro de execução que poderá ocorrer caso os
drivers de acesso ao banco de dados não tenham sido localizados pelo ambiente
NetBeans. O Erro que poderá ocorre é um erro de
!
!
!
java.lang.ClassNotFoundException.
Figura 14 - Erro de falta de acesso ao driver necessário.
!
Em resumo, o ambiente NetBeans não sabe que a sua aplicação necessita acessar
esse driver. Logo, há a necessidade de especificar esse driver para o ambiente.
3. Como configurar o NetBeans para utilizar o driver de acesso ao banco de
dados
1) Para especificar um driver para o ambiente é necessário e suficiente que a opção
“Libraries” do projeto receba um clique com o botão direito do mouse e a opção “Add
Library...” seja selecionada, conforme ilustra a Figura 15a), caso voce esteja trabalhando
com o banco de dados MySQL. Se o seu banco de dados for o JavaDB, voce precisará
selecionar a opção “Add Jar/Folder” conforme ilustra a Figura 15b).
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
11
interface Windows:
Interface Mac:
a) para adicionar um driver da biblioteca “Add Library”
(necessário para acessar o MySQL)
b) para adicionar um driver da biblioteca armazenado em
uma pasra (necessário para o uso do JavaDB).
Figura 15 - Adição de acesso a drivers no ambiente.
2) Caso voce tenha selecionado “Add Library”, siga o passo definido em 2a). Caso voce
tenha selecionado “add Jar/Folder” vá para o passo 2b).
** 2a) Uma janela com as bibliotecas possíveis de serem adicionadas ao projeto é
apresentada, conform ilustra a Figura 16.
Figura 16 - Lista de drivers disponíveis.
!
Escolha o driver “MySQL JDBC Driver” e clique no botão “Add Library”.
UTFPR – DAELN - Disciplina de Fundamentos de Programação II ( IF62C ).
Prof. Robinson Vida Noronha
Tema: Persistência de Classes
12
**2b) Uma janela para seleção de diretório será apresentada, conforme ilustra a
Figura 17. Selecione o diretório que é indicado pela Figura 17 (“c:\arquivos de
programas\sun\javadb\lib”). Após isso, selecione o driver “derbyClient.jar”,
conforme ilustra a Figura 18 .
Figura 17 - Localização do Driver para acessar o JavaDB
Figura 18 - Driver a ser selecionado: derbyclient.jar
3) Encerrado o processo de adicionar essa nova biblioteca ao projeto, se novamente
executado, não haverá mais mensagem de erro.
Download