Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Prof. Douglas O. Tybel 
 
FACULDADE VALE CRICARÉ – FVC 
APOSTILA LINGUAGEM 
PROGRAMAÇÃO II 
JAVA – POJO (Plain Old Java Objects) 
 
DOUGLAS TYBEL 
10/28/2010 
 
 
Data Versão da Revisão Descrição da Revisão Autor 
28/10/2010 1.00 Criada Douglas Tybel 
07/03/2014 1.01 Adicionado tópico – Erros 
Conhecidos 
Douglas Tybel 
 
 
Este documento contém material desenvolvido pelo professor Douglas Tybel da Faculdade Vale do 
Cricaré em São Mateus/Es. Esta apostila tem como objetivo facilitar o ensino da disciplina com base em 
muitos exercícios práticos, trabalhando assim a linguagem e exercitando novas técnicas cada vez mais 
evolutivas. 
 Prof. Douglas O. Tybel 
 
INTRODUÇÃO.......................................................................................................................... 1 
FÁBRICA DE CONEXÕES ....................................................................................................... 2 
IMPORTS NECESSARIOS PARA A CLASSE DE CONEXÃO: ................................................................. 3 
CÓDIGO FONTE DA CLASSE CONEXAO: ....................................................................................... 3 
EXEMPLO DA CLASSE CONEXAO.......................................................................................... 4 
EXECUTAR COMANDO INSERT NO BANCO DE DADOS ...................................................... 5 
EXEMPLO ............................................................................................................................. 6 
EXECUTANDO CONSULTA NO BANCO DE DADOS ............................................................. 7 
COMO RECUPERAR VALORES DE UM RESULTSET ........................................................................ 7 
PRATICAR ............................................................................................................................ 8 
ENTENDENDO COMPONENTE JTABLE ................................................................................ 9 
EXEMPLO POPULAR JTABLE A PARTIR RESULTADO DE CONSULTA SQL .................... 11 
PRATICAR .......................................................................................................................... 12 
CADASTRO SIMPLES EM JAVA SEM USO DE CLASSE ..................................................... 13 
CRIAR CLASSE DE ENTIDADE JAVA .................................................................................. 14 
CRIAR MÉTODO SETCADASTAR() ......................................................................................... 16 
EXEMPLO DA CLASSE CONTATOS ................................................................................... 19 
CÓDIGO DO BOTÃO “CADASTRAR” USANDO AS TÉCNICAS DE ORIENTAÇÃO A OBJETO ..................... 20 
PRATICAR .......................................................................................................................... 21 
CRIAR MÉTODO GETCONSULTAR() COM RETORNO DO TIPO RESULTSET ................... 22 
CÓDIGO USADO NO BOTÃO CONSULTAR COM TÉCNICAS ORIENTAÇÃO A OBJETOS .......................... 23 
PRATICAR .......................................................................................................................... 24 
RECUPERAR DADOS DO JTABLE ....................................................................................... 25 
DESENVOLVER O CÓDIGO PARA RECUPERAR OS DADOS DO JTABLE ............................................. 26 
ERROS CONHECIDOS .......................................................................................................... 27 
CONCLUSÃO ......................................................................................................................... 30 
 
1 
 
 
 Prof. Douglas O. Tybel 
 
INTRODUÇÃO 
Plain Old Java Objects ou POJO são objetos Java que seguem um desenho simplificado em 
contraposição aos EJBs (Enterprise JavaBeans), por exemplo. Um JavaBean é um POJO que 
segue definições rígidas de estrutura (construtor default sem argumentos e métodos que 
seguem o padrão de encapsulamentos getters e setters para seus atributos). 
Este padrão é baseado na ideia de que quanto mais simples o projeto, melhor. O termo foi 
inventado por Martin Fowler, Rebecca Parsons e Josh MacKenzie em Setembro de 2000. 
Mesmo sendo simplificada, conta com integração de bibliotecas capazes de conectar-se a um 
banco de dados com Java, isto é feito de maneira diferenciada. Para evitar que cada banco 
tenha a sua própria API e conjunto de classes e métodos, temos um único conjunto de 
interfaces muito bem definidas que devem ser implementadas. Esse conjunto de interfaces fica 
dentro do pacote java.sql e nos referiamos a esta API como JDBC
1
. 
 
 
 
 
 
Entre as diversas interfaces deste pacote, existe a interface Connection que define, entre 
outros, métodos para executar uma query, comitar transação e fechar a conexão. Caso 
queiramos trabalhar com o MySQL
2
, precisamos de classes concretas que implementem essas 
interfaces do pacote java.sql. 
Esse conjunto de classes concretas é quem fará a ponte entre o código cliente que usa a API 
3
JDBC e o banco de dados. São essas classes que sabem se comunicar através do protocolo 
proprietário do banco de dados. Esse conjunto de classes recebe o nome de driver. Todos os 
principais bancos de dados do mercado possuem drivers JDBC para que você possa utilizá-los 
com Java. 
 
 
 
1
 Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que fazem o 
envio de instruções SQL para qualquer banco de dados relacional 
2
 O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de 
Consulta Estruturada, do inglês Structured Query Language) como interface 
3
 Application Programming Interface (ou Interface de Programação de Aplicações) é um conjunto de rotinas e 
padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos que não 
querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. 
Cliente 
Interface 
JDBC 
Implementação 
JDBC MySQL DB 
Implementação 
JDBC MySQL 
DriverManager.getConnection("jdbc:mysql://l
ocalhost/teste"); 
2 
 
 
 Prof. Douglas O. Tybel 
 
FÁBRICA DE CONEXÕES 
Para abrir uma conexão com um banco de dados, precisamos utilizar sempre um driver. A 
classe DriverManager é a responsável por se comunicar com todos os drivers que você deixou 
disponível. Para isso, invocamos o método estático getConnection com uma String que indica a 
qual banco desejamos nos conectar. 
Essa String - chamada de String de conexão JDBC - utilizada para acessar o MySQL, segue 
o padrão abaixo: 
jdbc:mysql://ip/nome_do_banco 
Devemos substituir ip pelo IP do servidor e nome_do_banco pelo nome do banco de dados a 
ser utilizado, o restante mantem o padrão. 
 
Seguindo o exemplo da linha acima e tudo que foi dito até agora, seria possível rodar o 
exemplo abaixo e receber uma conexão para um banco MySQL chamado exemplo, caso ele 
esteja rodando na mesma máquina: 
 
public class JDBCExemplo { 
 
public static void main(String[] args) throws SQLException { 
Connection conexao = DriverManager.getConnection("jdbc:mysql://localhost/nome_banco","usuario","senha"); 
System.out.println("Conectado!"); 
conexao.close(); 
 
} 
} 
 
Parâmetos a serem preencidos no getConnection: jdbc:mysql://localhost/nome_banco 
1. Devemos substituir “localhost” para o IP ou nome do servidor 
2. Devemos substituir “nome_banco” pelo nome do banco de dados 
3. Devemos substituir “usuario” pelo usuário de acesso ao banco de dados 
4. Devemos substituir “senha” pela senha do usuáriode acesso ao banco de dados 
 
Repare que estamos deixando passar a SQLException, que é uma exception checked, 
lançada por muitos dos métodos da API de JDBC. Em uma aplicação real devemos utilizar 
try/catch nos lugares que julgamos haver possibilidade de recuperar uma falha com o banco de 
dados. Também precisamos tomar sempre cuidado para fechar todas as conexões que foram 
abertas. 
 
Dica 
É necessário carregar o driver MySQL na biblioteca. 
Clique com botão direito nas bibliotecas >> Adicionar biblioteca, na lista escolha MySQL 
JDBC Driver. 
 
 
 
3 
 
 Prof. Douglas O. Tybel 
 
Abaixo segue exemplo de uma classe simples para conexão. 
1. Crie um banco de dados chamado banco, tenha em mãos seu usuario e senha do 
MySQL; 
2. Para efetuar teste com esta classe, crie um novo projeto no NetBeans chamado 
Fabrica. Clique no menu Novo >> Novo Projeto, categoria Java e projetos “Aplicativo a 
área de trabalho Java”. 
3. Crie uma nova classe no seu projeto chamada Conexao, para isso clique com botão 
direito do mouse no pacote principal escolha Novo >> Classe Java, ao solicitar o nome 
da classe digite Conexao, pressione Finalizar para concluir. (observe que a primeira 
letra é maiúscula). 
4. Copie os imports necessários em destaque vermelho logo abaixo e cole na classe 
Conexao em baixo da linha: package Fabrica; 
Imports necessarios para a classe de conexão: 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
 
Código fonte da classe Conexao: 
 
1. public Conexao () { } //Possibilita instancias 
2. public static Connection con = null; 
 
3. public static void Conectar() { 
4. System.out.println("Conectando ao banco..."); 
5. try { 
6. Class.forName("com.mysql.jdbc.Driver"); 
7. con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/banco","root",""); 
8. System.out.println("Conectado."); 
9. } catch (ClassNotFoundException ex) { 
10. System.out.println("Classe não encontrada, adicione o driver nas bibliotecas."); 
11. Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex); 
12. } catch(SQLException e) { 
13. System.out.println(e); 
14. throw new RuntimeException(e); 
15. } 
 
16. } 
 
Observe que existem quatro parâmetros para serem configurados na classe Conexao, eles 
são: IP, BANCO, USUARIO E SENHA. 
 
 
4 
 
 Prof. Douglas O. Tybel 
 
EXEMPLO DA CLASSE Conexao 
 
package Fabrica; 
 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
 
public class Conexao { 
 
public Conexao () { } //Possibilita instancias 
public static Connection con = null; 
 
public static void Conectar() { 
System.out.println("Conectando ao banco..."); 
try { 
 Class.forName("com.mysql.jdbc.Driver"); 
 con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/banco","usuario","senha"); 
 System.out.println("Conectado."); 
} catch (ClassNotFoundException ex) { 
 System.out.println("Classe não encontrada, adicione o driver nas bibliotecas."); 
 Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex); 
 } catch(SQLException e) { 
 System.out.println(e); 
 throw new RuntimeException(e); 
} 
 
} 
 
} 
 
 
 
PARA REALIZAR O TESTE COM SUA CLASSE DE CONEXÃO, FAÇA O SEGUINTE: 
1. Crie um JFRAME 
4
e um botão no meio com o seguinte código: 
Conexao.Conectar(); 
Este método Conectar() será executado normalmente na abertura do frame, já instanciando a 
variável con da classe Conexao com as informações para conectar-se ao banco de dados. A 
partir deste momento a variável con da classe Conexao está declarada contendo os dados de 
conexão. 
Para fechar a conexão é necessário usar: Conexao.con.close(); 
Repare que ao clicar no botão aparecerá caso tudo ocorra bem, a seguinte saída: 
Conectando ao banco... 
Conectado. 
 
 
4
 No NetBeans clique com botão direito do mouse sobre o projeto, Novo >> Formulário Jframe. Ao solicitar o nome do 
frame digite nome desejado. 
5 
 
 Prof. Douglas O. Tybel 
 
EXECUTAR COMANDO INSERT NO BANCO DE DADOS 
Com a conexão pronta, necessitamos declarar uma SQL para executarmos no banco de 
dados. Poderemos usar os comandos DML para modelar os dados no banco, como por 
exemplo: INSERT,UPDATE e DELETE bem como o famoso SELECT. 
As cláusulas são executadas em um banco de dados através da interface PreparedStatement. 
Para receber um PreparedStatement relativo à conexão, basta chamar o método 
prepareStatement, passando como argumento o comando SQL com os valores vindos de 
variáveis preenchidos com uma interrogação. 
1. Crie uma tabela no banco de dados chamado “banco” que você criou nos passos 
anteriores, chamada: contatos com os campos id : Integer(autoInc),nome : 
Varchar(80) e email : Varchar(80) 
2. Abaixo segue exemplo do comando para inserir diretamente no banco de dados sem 
uso de classe de entidade. Para efetuar teste com este comando, crie um novo projeto 
no NetBeans chamado Pagina5. Clique no menu Novo >> Novo Projeto, categoria 
Java e projetos “Aplicativo a área de trabalho Java”. 
3. Crie um novo Jframe, para isso execute um clique com botão direito do mouse sobre o 
pacote pricipal Pagina5, Novo >> Formulário Jframe. Ao solicitar o nome do frame 
digita JFPagina5. 
4. Adicione um botão (Button) no meio do frame, rotule-o como Inserir e adicione no 
evento actionPerformed 
5
 o código abaixo: 
 
String sql = "insert into contatos (nome,email) values (?,?)"; 
java.sql.PreparedStatement stmt = Conexao.con.prepareStatement(sql); 
 
 
Cada interrogação no comando insert acima é um parametro que deve ser definido no 
PreparedStatement com setString para String’s setInt, setFloat e assim por diante, no nosso 
exemplo usaremos setString, pois os valores nome e email são deste tipo String. Não 
substitua as interrogações do comando insert acima por valores, as interrogações serão 
substituídas por meio dos parâmetros abaixo: 
 
// preenche os valores dos parametros em sua respectiva ordem 
stmt.setString(1, "DOUGLAS"); 
stmt.setString(2, "dtybel@yahoo.com.br"); 
 
 
Por fim, uma chamada ao metodo execute() que serve para executar o comando SQL sem 
retornar dados, isso significa que seu uso será geralmente para INSERT, UPDATE e DELETE. 
stmt.execute(); 
 
Será necessário adicionar trecho para tratamento de erro por bloqueio com try-catch 
 
5
 Clique com botão direito do mouse sobre o componente escolha Eventos >> Action >> actionPerformed 
6 
 
 Prof. Douglas O. Tybel 
 
EXEMPLO 
 
Veja o exemplo abaixo, execução de comando insert no banco considerando classe 
conexão explicada neste artigo. Crie um jFrame com um jButton, insira o código abaixo no 
evento actionPerformed, conforme exemplo da pagina acima. 
 
// conectando 
Conexao.Conectar(); 
// cria um preparedStatement 
String sql = "insert into contatos (nome,email) values (?,?)"; 
java.sql.PreparedStatement stmt = Conexao.con.prepareStatement(sql); 
// preenche os valores 
stmt.setString(1, "DOUGLAS"); 
stmt.setString(2, "dtybel@yahoo.com.br"); 
 
// executa 
stmt.execute(); 
stmt.close(); 
System.out.println("Gravado!"); 
Conexao.con.close(); 
 
 
 
Será necessário adicionar trecho para tratamento de erro por bloqueio com try-catch. 
Deixe sempre uma linha sobrando ao final do código antes de usar o assistente para usar o 
bloqueio, será a linha que ele usará para colocar o catch. 
 
7 
 
 Prof. Douglas O. Tybel 
 
EXECUTANDO CONSULTA NO BANCO DE DADOS 
Para realizarconsultas, também utilizamos a interface PreparedStatement, de forma que o 
método executeQuery retorna todos os dados de uma determinada consulta. 
O objeto retornado é do tipo ResultSet que permite navegar por seus registros através do 
método next etc. Esse método irá retornar false quando chegar ao fim da consulta, portanto é 
normalmente utilizado para realizar um loop nos registros como no exemplo a seguir: 
// pega a conexão e o Statement 
Conexao.Conectar(); 
java.sql.PreparedStatement stmt = Conexao.con.prepareStatement("select * from contatos"); 
// executa um select 
ResultSet rs = stmt.executeQuery(); 
// rs é a variável que armazenou todo o resultado (ResultSet) 
while (rs.next()) { //Observe que o loop inicia aqui, enquanto o rs.next() for igual a true(conter resultado) 
 
System.out.println(rs.getString("nome") + " :: " + rs.getString("email")); 
 
} //O loop renova aqui 
rs.close(); 
stmt.close(); 
Conexao.con.close(); 
 
Exemplo da saída: DOUGLAS :: dtybel@yahoo.com.br 
Será necessário adicionar trecho para tratamento de erro por bloqueio com try-catch. 
 
Como recuperar valores de um ResultSet 
 
Este trecho abaixo, explica a linha com fundo cinza acima dentro da estrutura de repetição 
while. 
Para retornar o valor de uma coluna no banco de dados basta chamar um dos métodos get do 
ResultSet , dentre os quais, o mais comum: getString. 
 
Segue passos para recuperar dados do ResultSet. 
Declarar uma variável do tipo ResultSet para armazenar o resultado do banco 
Usar os metodos getString,getFloat,getInt e outros. 
ResultSet rs = stmt.executeQuery(); 
 
CampoTexto.setText( rs.getString(“nome_do_campo_da_tabela_do_tipo_String”) ); 
CampoInteiro.setText( rs.getInt(“nome_do_campo_da_tabela_do_tipo_Inteiro”) ); 
CampoFloat.setText( rs.getFloat(“nome_do_campo_da_tabela_do_tipo_Real”) ); 
 
Este código não é muito diferente de um código em linguagem C, isto acontece porque a 
linguagem Java foi criada com base na linguagem C possuindo quase todas as palavras 
reservadas dela e um conceito que deixa muitos desenvolvedores descontentes: o case-
sensitive. Isso mesmo, Java é case-sensitive, portanto maiúsculas são diferentes de 
minúsculas, a é diferente de A. 
8 
 
 Prof. Douglas O. Tybel 
 
 
PRATICAR 
 
1. Crie um banco de dados chamado contatos; 
2. Crie uma tabela chamada contatos (nome, email); 
3. Crie um projeto 
6
 chamado contatos; 
4. Crie uma classe para conexão no banco de dados chamada Conexao com referencia 
ao banco agenda com usuário e senha definido na instalação do MySQL; 
5. Crie um JFrame 
7
 chamado JFAgenda com um botão JButton rotulado como 
CADASTRAR; 
6. O comando deste botão será uma inserção conforme exemplo acima na pagina 06; 
7. Adicione um novo jButton no frame jFAgenda agora rotulado como CONSULTAR; 
8. O comando deste botão será uma consulta conforme acima na pagina 07; 
 
 
6
 No NetBeans clique no menu Novo >> Novo Projeto, categoria Java e projetos “Aplicativo a área de trabalho 
Java”. 
7
 No NetBeans clique com botão direito do mouse sobre o projeto, Novo >> Formulário Jframe. Ao solicitar o 
nome do frame digite nome desejado. 
9 
 
 Prof. Douglas O. Tybel 
 
ENTENDENDO COMPONENTE JTABLE 
A classe JTable é utilizada para vizualizar dados em grid no Swing é um dos componentes 
mais complexos desse pacote. Alias o JTable possui até um pacote especial, que contém 
diversas classes para sua utilização: javax.swing.table. A JTable é um componente MVC
8
: o 
seu trabalho é dividido em 3 partes: Model: É a parte que cuida dos dados, quem controla e 
distribui os dados na jtable. É implementado pela interface TableModel ( AbstractTableModel e 
DefaultTableModel ). Ela é responsavel por fornecedor os dados para a tabela, a qual 
requisitará os dados atraves do método getValueAt, informando a linha e a coluna. Este 
método retorna um Object, ou seja, um objeto qualquer, que pode ser um Integer, uma String 
ou outra classe que você tenha implementado. 
Objerve o jFrame abaixo: 
 
jTable1 1 
O importante é observar as colunas (Código, Nome, Telefone), são estas colunas que 
usaremos como base para iniciar a população de dados. 
Para reproduziar a tabela acima, clique com botão direito no JTable e selecione “Conteúdo da 
tabela” 
 
8
 Model-view-controller (MVC) é um padrão de arquitetura de software que visa a separar a lógica de negócio da 
lógica de apresentação, permitindo o desenvolvimento, teste e manutenção isolado de ambos. 
Componente 
jTable 
Componente jButton 
10 
 
 Prof. Douglas O. Tybel 
 
 
Vamos neste momento definir uma variável para armazenar a estrutura atual da tabela: 
1. DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel(); 
2. modelo.setNumRows(0); //Limpar as linhas 
Onde modelo receberá os dados conforme a figura 1. 
Para inserir uma linha sera preciso executar o método addRow: 
modelo.addRow 
Segue abaixo como usá-lo corretamente: 
3. modelo.addRow(new Object[]{ 
“0001”, 
“Douglas”, 
“2799379892” 
}); 
 
4. jTable1.setModel(modelo); 
 
Esse comando adicionará uma nova linha com o conteúdo acima na tabela. 
11 
 
 Prof. Douglas O. Tybel 
 
EXEMPLO POPULAR JTABLE A PARTIR RESULTADO DE 
CONSULTA SQL 
 
Crie um jFrame com um Jbutton, adicione o conteúdo abaixo no evento actionPerformed do 
botão: 
 // TODO add your handling code here: 
 Conexao.Conectar(); 
 java.sql.PreparedStatement stmtQuery = Conexao.con.prepareStatement("Select * from pessoas"); 
 ResultSet resultSet = stmtQuery.executeQuery(); 
 resultSet.beforeFirst(); 
 
 DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel(); 
 modelo.setNumRows(0); 
 while (resultSet.next()){ 
 modelo.addRow(new Object[]{ 
 resultSet.getString("codPessoa"), 
 resultSet.getString("pessoa"), 
 resultSet.getString("telefone") 
 }); 
 
 } 
 
 jTable1.setModel(modelo); 
 
 
12 
 
 Prof. Douglas O. Tybel 
 
PRATICAR 
 
1. Crie um banco de dados no MySql chamado CONTATOS; 
2. Crie uma tabela chamada pessoas, com a seguinte estrutura 
(codPessoa,pessoa,telefone); 
3. Adicione alguns dados fictícios; 
4. Crie um novo projeto chamado Pagina12; 
5. Crie uma classe chamada Conexao, conforme o conteúdo da pagina: 4; 
6. Observe os parametros do getConnection da classe Conexao, direcione para o banco 
de dados correto com o usuário e senha: 
DriverManager.getConnection("jdbc:mysql://127.0.0.1/nome_do_banco","root",""); 
 
7. Criar novo Formulário jFrame chamado jFContato, conforme figura: jTable1 1 da 
pagina: 09, não será necessário os menus; 
8. O código do botão Consultar deve: Conectar e popular o JTable, conforme exemplo 
na pagina: 11 
 
13 
 
 Prof. Douglas O. Tybel 
 
CADASTRO SIMPLES EM JAVA SEM USO DE CLASSE 
Crie um formulário jFrame chamado JFContato, conforme a figura abaixo: 
 
 
Renomeie os campos conforme abaixo: 
Rótulo Nome 
Código codigojTextField 
Nome pessoajTextField 
Telefone telefonejTextField 
Cadastrar cadastrarjButton 
 
Insira o seguinte código no evento actionPerformed do botão rotulado Cadastrar: 
 try { 
 // TODO add your handling code here: 
 // conectando 
 Conexao.Conectar(); 
 // cria um preparedStatement 
 String sql = "insert into pessoas (pessoa,telefone) values (?,?)"; 
 PreparedStatement stmt = Conexao.con.prepareStatement(sql);// preenche os valores 
 stmt.setString(1, pessoajTextField.getText()); 
 stmt.setString(2, telefonejTextField.getText()); 
 // executa 
 stmt.execute(); 
 stmt.close(); 
 System.out.println("Gravado!"); 
 Conexao.con.close(); 
 
 } catch (SQLException ex) { 
 Logger.getLogger(jFContato.class.getName()).log(Level.SEVERE, null, ex); 
 } 
 
14 
 
 Prof. Douglas O. Tybel 
 
CRIAR CLASSE DE ENTIDADE JAVA 
Para realizarmos o cadastro acima, colocamos o código DML diretamente no botão cadastrar, 
o que não é permitido na programação orientada a objeto. 
Entendemos que o insert acima representa o método “Cadastrar contato”, isto significa que é 
um método chamado setCadastar() da classe de contato. 
Para representarmos isso de forma correta devemos montar a classe: 
Contatos 
codPessoa 
pessoa 
telefone 
setCadastrar() 
setConsultar() 
 
Logicamente existem outros métodos na classe contatos, contudo focaremos na função 
setCadastrar(); 
É bem simples a lógica, pois divide em duas partes conforme abaixo: 
1. Criar a classe chamada Contatos 
2. Criar método setCadastar() na classe Contatos 
Para criar uma classe chamada Contatos, clique com botão direito no pacote da aplicação e 
escolha opção: Novo >> Classe Java 
O código conforme abaixo será gerado automaticamente: 
package desktopapplication1; 
 
1. public class Contatos { 
//Implementar os atributos e métodos 
} 
 
Implemente os atributos na classe conforme abaixo, em destaque vermelho: 
 
2. public class Contatos { 
private Integer codPessoa; 
private String pessoa; 
private String telefone; 
 
} 
 
No próximo passo precisamos criar os métodos get e set publicos. Para realizar esta tarefa de 
forma automática, clique no final da classe antes da “chave }” e pressione as teclas [ALT] e 
[INSERT] . 
Aparecerá uma janela de opções conforme abaixo: 
A criação de um modificador de acesso aos métodos privados é chamada de 
encapsulamento. 
15 
 
 Prof. Douglas O. Tybel 
 
 
 
Escolha Getter e setter, aparecerá uma nova janela com as opções abaixo: 
 
 
 
Marque todos os métodos e clique no botão [Gerar]. 
 
Os métodos públicos usando a técnica de encapsulamento serão gerados automaticamente na classe 
acima. 
 
16 
 
 Prof. Douglas O. Tybel 
 
CRIAR MÉTODO setCadastar() 
 
Para criarmos um método que contenha os comandos para cadastrar um contato, é necessário 
observar três pontos importantes: 
1. Visibilidade 
2. Retorno 
3. Parametros 
O primeiro ponto trata-se de visibilidade, pois não adinhanta criarmos um método que os 
frames não possão acessar, deste modo a visibilidade do método será public, assim sua 
visibilidade será publica para todo o projeto. 
O segundo ponto trata-se do retorno desejado após execução do comando. Normalmente para 
comandos de definição como o setCadastrar , setAlterar ou setExcluir, não existe retorno, pois 
apenas queremos alterar o conteúdo da tabela e não precisamos de retorno para mostrar para 
o usuário, deste modo o retorno correspondente a nulo será void. 
O terceiro e ultimo ponto, trata-se de parâmetros que possamos precisar para execução o 
comando. Os parametros podem ser repassados atraves da própria função como exemplo 
abaixo: 
Declaração: 
setCadastar(int Codigo); 
Uso: 
setCadastrar( 2 ); 
Com este uso o número 2 estará disponível dentro da classe e do método setCadastrar na 
variável Codigo. 
Por outro lado e até mais útil, podemos usar os próprios atributos da classe como parâmetros, 
pois eles já são visíveis e acessáveis de dentro do método sem a necessidade de repassá-los, 
apenas é necessário atribuir valor antes de executar o método, como exemplo abaixo: 
//O código abaixo será usado no evento click do botão, não será colocado na classe Contatos. 
Contatos oContato = new Contatos(); 
oContato.setCodPessoa( 2 ); 
oContato.setCadastrar(); 
 
A variável codPessoa estará presente dentro da função setCadastrar com o valor 2, assim 
podemos utilizá-lo para inserir em nosso comando. 
Veja exemplo da declaração do método setCadastrar() que deverá ser inserido na classe 
Contatos: 
1. public void setCadastrar(){ 
 //Comandos a serem executados 
} 
 
Para usarmos o conceito de classe abstrata e poliformismo, estenderíamos a classe Contatos 
para a uma classe pessoas: “Public class Contatos extends Pessoas{ códigos... };” fazendo 
com que a classe Contatos herdasse todos os métodos públicos da classe Pai chamada 
Pessoas. 
 
17 
 
 Prof. Douglas O. Tybel 
 
Usaremos então o mesmo código utilizado no botão cadastar, contudo faremos algumas 
alterações: 
Insira o código abaixo dentro do método setCadastrar que você acabou de criar acima, na classe 
Contatos: 
 
2. String sql = "insert into pessoas (pessoa,telefone) values (?,?)"; 
 PreparedStatement stmt = Conexao.con.prepareStatement(sql); 
 // preenche os valores 
 stmt.setString(1, pessoajTextField.getText()); 
 stmt.setString(2, telefonejTextField.getText()); 
 // executa 
 stmt.execute(); 
 stmt.close(); 
 System.out.println("Gravado!"); 
 Conexao.con.close(); 
 
 
 
Lembre-se de importar a biblioteca java.sql.PreparedStatement. 
 
Use o bloquei para casos de erro no trecho desenvolvido acima. 
 
Observe que duas linhas ainda constam erros, pois não existe os componentes 
pessoajTextField e telefonejTextField na classe Contatos para pegar os valores, assim os 
mesmos devem ser passados para classe antes mesmo da execução deste método, como no 
exemplo a seguir: 
//Código do evento actionPerformed do botão cadastrar, não deverá haver mais nenhum outro código 
além deste abaixo: 
Contatos oContato = new Contatos(); 
oContato.setPessoa( “DOUGLAS” ); 
oContato.setTelefone( “2799379892” ); 
oContato.setCadastrar(); 
 
Devemos alterar as linhas erradas pelos próprios métodos, já que os valores foram atribuídos 
antes da execução do método. 
18 
 
 Prof. Douglas O. Tybel 
 
 
Após alteração o trecho será alterado conforme acima. 
Segue abaixo conteúdo do método setCadastrar: 
 try { 
 // cria um preparedStatement 
 String sql = "insert into pessoas (pessoa,telefone) values (?,?)"; 
 PreparedStatement stmt = Conexao.con.prepareStatement(sql); 
 // preenche os valores 
 stmt.setString(1, getPessoa() ); 
 stmt.setString(2, getTelefone() ); 
 // executa 
 stmt.execute(); 
 stmt.close(); 
 System.out.println("Gravado!"); 
 Conexao.con.close(); 
 } catch (SQLException ex) { 
 Logger.getLogger(Contatos.class.getName()).log(Level.SEVERE, null, ex); 
 } 
 
 
19 
 
 Prof. Douglas O. Tybel 
 
EXEMPLO DA CLASSE CONTATOS 
 
package Pagina20; 
 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
 
public class Contatos { 
private Integer codPessoa; 
private String pessoa; 
private String telefone; 
 
 public Integer getCodPessoa() { 
 return codPessoa; 
 } 
 
 public void setCodPessoa(Integer codPessoa) { 
 this.codPessoa = codPessoa; 
 } 
 
 public String getPessoa() { 
 return pessoa; 
 } 
 
 public void setPessoa(String pessoa) { 
 this.pessoa = pessoa; 
 } 
 
 public String getTelefone() { 
 return telefone; 
 } 
 
 public void setTelefone(String telefone){ 
 this.telefone = telefone; 
 } 
 
public void setCadastrar(){ 
 try { 
 // cria um preparedStatement 
 String sql = "insert into pessoas (pessoa,telefone) values (?,?)"; 
 PreparedStatement stmt = Conexao.con.prepareStatement(sql); 
 // preenche os valores 
 stmt.setString(1, getPessoa() ); 
 stmt.setString(2, getTelefone() ); 
 // executa 
 stmt.execute(); 
 stmt.close(); 
 System.out.println("Gravado!"); 
 Conexao.con.close(); 
 } catch (SQLException ex) { 
 Logger.getLogger(Contatos.class.getName()).log(Level.SEVERE, null, ex); 
 } 
 
} } 
20 
 
 Prof. Douglas O. Tybel 
 
 
Código do botão “Cadastrar” usando as técnicas de orientação a 
objeto 
 
O código do botão cadastrar usando as técnicas OO
9
, será sempre mais curto, pois todo o 
código estará na classe, assim em todo o projeto, toda vez que fizer necessário o uso do 
cadastro de contato, não será necessário digitar todo o código e sim o método chamado a 
partir da classe Contatos, conforme abaixo: 
 Conexao.Conectar(); 
 Contatos oContato = new Contatos(); 
 oContato.setPessoa( pessoajTextField.getText() ); 
 oContato.setTelefone( telefonejTextField.getText() ); 
 oContato.setCadastrar(); 
 
Obs.: Não há necessidade de uma conexão toda vez que for executar um método, basta 
conectar na abertura do frame por exemplo. 
 
 
9
 A orientação a objetos é um paradigma de análise, projeto e programação de sistemas de software baseado na 
composição e interação entre diversas unidades de software chamadas de objetos. 
Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programação. De fato, o paradigma 
"orientação a objeto", tem bases conceituais e origem no campo de estudo da cognição, que influenciou a área de 
inteligência artificial e da linguística, no campo da abstração de conceitos do mundo real 
21 
 
 Prof. Douglas O. Tybel 
 
PRATICAR 
 
1. Em sua aplicação chamada Pagina20; 
2. Contendo uma classe chamada Conexao, conforme o conteúdo da pagina: 4; 
3. Criar novo Formulário jFrame chamado jFContatoOO, conforme pagina: 13; 
4. Crie uma classe para entidade Contatos; 
5. Crie na classe Contatos o método setCadastar() com os códigos conforme pagina: 18 
6. O código do botão Cadastar, deve: Conectar e executar o método setCadastar() da 
classe Contatos, conforme exemplo na pagina: 20 
 
22 
 
 Prof. Douglas O. Tybel 
 
Criar método getConsultar() com retorno do tipo ResultSet 
Para criarmos um método que contenha os comandos para consultar um contato, é necessário 
observar três pontos simples: 
1. Visibilidade 
2. Retorno 
3. Parametros 
O primeiro ponto trata-se de visibilidade, pois não adinhanta criarmos um método que os 
frames não possão acessar, deste modo a visibilidade do método será public, pois sua 
visibilidade será publica para todo o projeto. 
O segundo ponto trata-se do retorno desejado após execução do comando. Normalmente para 
comandos de consulta como o getConsultar, getEmitir ou getID, existem retornos de diversos 
tipos, mas normalmente gostariamos de tratar todo o retorno em forma de tabela. O retorno 
que representará a tabela em sua igualdade será o tipo ResultSet. 
O terceiro e ultimo ponto trata-se de parâmetros que possamos precisar para execução do 
comando. Os parametros podem ser repassados atraves da própria função no caso da 
consulta não será necessário. 
Conforme já visto no método setCadastrar, a única diferença é que o retorno da função não é 
nulo ou void por assim dizer, observe abaixo a declaração do método: 
public ResultSet getConsultar(){ 
 //Código para consultar 
} 
 
Será necessário importar a seguinte classe: java.sql.ResultSet, conforme imagem acima. 
Substituir //Código para consultar, pelo seguinte código abaixo: 
 String comandoSQL = "Select * from pessoas "; 
 if ( getCodPessoa() > 0 ){ 
 comandoSQL += " where codPessoa = ?"; 
 } 
 java.sql.PreparedStatement stmtQuery = Conexao.con.prepareStatement(comandoSQL); 
 
 if ( getCodPessoa() > 0 ){ 
 stmtQuery.setInt(1, getCodPessoa()); 
 } 
 
 ResultSet resultSet = stmtQuery.executeQuery(); 
 resultSet.beforeFirst(); 
 return resultSet; 
 
A linha em destaque amarela acima, refere ao retorno da função com a variável resultSet 
declarada para armazanar o resultado do banco de dados. 
23 
 
 Prof. Douglas O. Tybel 
 
Obs.: Lembre-se de deixar o tratamento de exceção com uma throws chamada 
SQLException, conforme a figura abaixo: 
 
Segue abaixo código completo após criação: 
public ResultSet getConsultar() throws SQLException{ 
 String comandoSQL = "Select * from pessoas "; 
 if ( getCodPessoa() > 0 ){ 
 comandoSQL += " where codPessoa = ?"; 
 } 
 java.sql.PreparedStatement stmtQuery = Conexao.con.prepareStatement(comandoSQL); 
 
 if ( getCodPessoa() > 0 ){ 
 stmtQuery.setInt(1, getCodPessoa()); 
 } 
 
 ResultSet resultSet = stmtQuery.executeQuery(); 
 resultSet.beforeFirst(); 
 
return resultSet; 
} 
Código usado no botão consultar com técnicas orientação a objetos 
 
 try { 
 // TODO add your handling code here: 
 Conexao.Conectar(); 
 Contatos oContato = new Contatos(); 
 ResultSet resultSet = oContato.getConsultar(); 
 DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel(); 
 modelo.setNumRows(0); 
 while (resultSet.next()) { 
 modelo.addRow(new Object[]{resultSet.getString("codPessoa"), resultSet.getString("pessoa"), 
resultSet.getString("telefone")}); 
 } 
 jTable1.setModel(modelo); 
 
 } catch (SQLException ex) { 
 Logger.getLogger(DesktopApplication1View.class.getName()).log(Level.SEVERE, null, ex); 
 } 
 
24 
 
 Prof. Douglas O. Tybel 
 
PRATICAR 
 
1. Crie uma aplicação chamada Servicos; 
2. Use a classe Conexao já existente (altere apenas os dados de conexão); 
3. Crie um banco de dados chamado Servicos; 
4. Crie uma tabela chamada Servicos (id,servico,descricao), id sendo autoInc; 
5. Crie a classe de entidade Servicos no projeto corrente, conforme exemplos ensinados; 
6. Crie os métodos de consulta e cadastro na classe de Servicos conforme exemplos; 
7. Crie um frame para cadastrar os Serviços e outro frame para consultar os serviços, 
quem quiser pode fazer em um jFrame apenas se achar mais simples. 
8. Desenvolva os códigos dos botões chamando os métodos da classe Serviço para 
cadastrar e consultar, conforme exemplos a partir da pagina: 20 
 
25 
 
 Prof. Douglas O. Tybel 
 
RECUPERAR DADOS DO JTABLE 
Para recuperar os dados de um jTable e preencher os campos do formulário é necessário 
seguir a lógica abaixo: 
1. A primeira coluna do jTable deve ser o código do item desejado; 
2. Pegar o código da primeira coluna quando o usuário clicar em cima do registro e 
armazenar em uma variável do tipo int; 
3. Com o código do item devemos efetuar uma consulta no banco de dados; 
4. Usar o resultado e preencher os campos do formulário; 
Observe abaixo o que deve acontecer: 
1. 
2. 
3. 
 
Vamos considerar a classe Contatos já criada anteriormente nos exercícios acima, conforme 
grade abaixo. 
Contatos 
codPessoa 
pessoa 
telefone 
setCadastrar() 
setConsultar() 
 
Criaremos um novo projeto chamado Pagina25, crie um novo jFrame chamado JFRecuperar. 
Este formulário será desenhado conforme figuraacima, o botão consultar deve popular a grade 
conforme exemplo acima das paginas anteriores usando a orientação a objetos. O que 
devemos saber no momento é que o clique no registro deverá preencher os campos do 
formulário. 
 
 
26 
 
 Prof. Douglas O. Tybel 
 
Desenvolver o código para recuperar os dados do jTable 
 
Para realizar esta tarefa, siga os passos abaixo: 
1. Use o nome dos componentes conforme grade abaixo: 
Rótulo Nome 
Código codigojTextField 
Nome pessoajTextField 
Telefone telefonejTextField 
Consultar consultarjButton1 
 
2. Entre no evento mouseClicked (clique do mouse na grade) do jTable1, conforme 
imagem abaixo: 
 
3. Insira o código abaixo: 
 
 int codPessoa = Integer.parseInt(jTable1.getValueAt(jTable1.getSelectedRow(), 0).toString()); 
 Contatos oContato = new Contatos(); 
 oContato.setCodPessoa(codPessoa); //Filtrar pelo código 
 java.sql.ResultSet rs = oContato.getConsultar(); 
 rs.first(); 
 codPessoajTextField.setText( rs.getString("codPessoa") ); 
 pessoajTextField.setText( rs.getString("pessoa") ); 
 telefonejTextField.setText( rs.getString("telefone") ); 
 
4. Será necessário bloquear o trecho com try-catch, conforme imagem abaixo: 
 
 
 
27 
 
 Prof. Douglas O. Tybel 
 
ERROS CONHECIDOS 
ERRO: 
no suitable method found for add 
CAUSA: 
Os botões novo, salvar etc, foram copiados de um formulário CRUD JPA para outro form 
SOLUÇÃO: 
Ir em cada um dos botões acertando de acordo com a classe nova ou deletar e refazer 
======================================================================== 
ERRO: 
java.lang.ClassCastException: com.mysql.jdbc.JDBC4PreparedStatement cannot be cast to 
get.PreparedStatement 
CAUSA: 
Foi criado as classes: SQLException,PreparedStatement ao invés de importá-las 
Ao clicar no assistente de importação do IDE Netbeans (lampada) foi escolhida a opção "criar 
classe" 
SOLUÇÃO: 
Na pacote do projeto, deve ter classes do tipo SQLException ou PrepareStatement, então 
exclua. 
Os importes serão solicitados novamente, clique em importar. Não clique em criar classe 
SQLException. 
======================================================================== 
ERRO: 
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 
CAUSA: 
Usuário ou senha do mysql não está correto 
SOLUÇÃO: 
Na Unidade de persistência ou classe de conexão corrija o usuário ou senha para conectar ao 
mysql 
======================================================================== 
ERRO: 
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
No suitable driver found for jdbc:mysql 
28 
 
 Prof. Douglas O. Tybel 
 
 
CAUSA: 
Ausência dos drivers mysql nos libs (bibliotecas) do projeto 
SOLUÇÃO: 
Na pasta library ou biblioteca do projeto, adicione o pacote do mysql 
======================================================================== 
ERRO: 
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: No 
Persistence provider for EntityManager named ecomercialPU: 
CAUSA: 
Ao realizar @JoinColumn deve-se excluir o @Basic(optional = false) 
Erro acontece com JPA e CRUD, nada mais funciona(jframes) 
SOLUÇÃO: 
Existe algum: @Basic(optional = false) 
Em alguma classe e, campos com @ManyToOne,@JoinColumn não pode ter @Basic. 
SOLUÇÃO 2: 
Em ultimo caso: 
1 - Remover da biblioteca a swing application framework 
2 - Adicionar novamente 
3 - Vassourar(compilar e limpar) 
======================================================================== 
ERRO: 
cvc-complex-type.3.1: Value '2.0' of attribute 'version' of element 'persistence' is not valid with 
respect to the corresponding attribute use. 
Attribute 'version' has a fixed value of '1.0' 
SOLUÇÃO: 
1 - Remover da biblioteca a Vinculação de Beans 
2 - Recompilar - Vassourar(compilar e limpar) 
3 - Obs(ele vai se auto adicionar, quando vc for até o designer do frame e entrar no codigo 
fonte) 
======================================================================== 
 
29 
 
 Prof. Douglas O. Tybel 
 
ERRO: 
org.jdesktop.beansbinding.Binding.convertReverse float 
Bind jformatedTextField no netbeans 
CAUSA: 
O value de um campo é preenchido antes mesmo da mascara, por isso o erro, já o text não. 
SOLUÇÃO: 
Vincule o text não o value. 
 
30 
 
 Prof. Douglas O. Tybel 
 
CONCLUSÃO 
Nesta apostila conferimos como efetuar uma conexão entre o Java e o banco de dados 
MySQL. Vimos também como representar uma classe e objeto em Java de uma tabela do 
banco de dados, tudo isso usando o paradigma da orientação a objetos. 
Construindo comandos SQL nos métodos das classes, aliado ao IDE de desenvolvimento do 
NetBeans, desenvolvemos telas capazes de manipular os dados armazenados no banco de 
dados. 
É importante ressaltar a importância do uso deste paradigma POO (Programação Orientada a 
Objetos), veja que ao aprender Java, você também está aprendendo diversas linguagens 
associadas ao POO, sendo capaz de programar em: C, C++, C#,PHP e o mais diferente entre 
esses o Pascal(IDE do CodeGear – Delphi). 
Aprendido como usar as classes POJO é um enorme salto para o aprendizado de novos 
modelos de arquitetura como Model-view-controller (MVC) que conta com algumas diferenças 
que serão absorvidas facilmente com o conteúdo aprendido sobre Plan Old Java Objects. 
Imagine aprender uma linguagem e levar este pacote inteiro! Não seria uma maravilha? Isso é 
real, um programador Java consegue aprender estas outras linguagens em menos de duas 
semanas.

Mais conteúdos dessa disciplina