• Nenhum resultado encontrado

Persistência Java para Web com MySQL

N/A
N/A
Protected

Academic year: 2021

Share "Persistência Java para Web com MySQL"

Copied!
7
0
0

Texto

(1)

Persistência – Java para Web com MySQL

1. Criar o modelo no DBDesigner

2. Criar o esquema e as tabelas no MySQL

3. Criar um projeto Java simples, com o nome Empresa,no NetBeans

4. Adicionar o driver de conexão MySQL:

a. Descompactar o arquivo com o driver em algum diretório

b. Clicar com o botão direito sobre o diretório biblioteca e adicionar jar

c. Localizar o arquivo contendo o driver e adicioná-lo

5. Criar três pacotes: modelo, persistencia e teste

6. No pacote teste, criar a classe TestaConexao:

package teste; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestaConexao {

public static void main (String args[]) throws SQLException{ Connection conexao = null;

String url = "jdbc:mysql://”servidor”:3306/empresa"; String usuario = "professor";

String senha = "professor"; try{

Class.forName("org.gjt.mm.mysql.Driver");

conexao = DriverManager.getConnection(url, usuario, senha); System.out.println("Conexão efetuada com sucesso!!!"); }catch(ClassNotFoundException cnfe){

System.out.println("Erro ao carregar o driver"); cnfe.printStackTrace();

} } }

7. Simular e testar erros na classe anterior

8. Criar uma classe no pacote persistência que contenha o método estático: getConexao():

package persistencia; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

public class GerenteConexao {

//metodo estático gerador de conexões public static Connection getConexao(){ Connection conexao = null;

String url = "jdbc:mysql://localhost:3306/empresa"; String usuario = "root";

(2)

try{

Class.forName("org.gjt.mm.mysql.Driver");

conexao = DriverManager.getConnection(url, usuario, senha); System.out.println("Conexão efetuada com sucesso!!!"); }catch(ClassNotFoundException cnfe){

System.out.println("Erro ao carregar o driver"); cnfe.printStackTrace();

}

catch(SQLException sqle){

System.out.println("Não foi possível conectar com o BD"); sqle.printStackTrace(); } return conexao; } }

9. Testar a classe

10. Criar uma classe TestaEmpregado contendo o método main() para testar a conexão com o banco de

dados:

package teste; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import persistencia.GerenteConexao; public class TestaEmpregado {

public static void main(String a[]){

Connection con = GerenteConexao.getConexao();

PreparedStatement pst = null; try{

String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(1,'Maria',25)"; pst = con.prepareStatement(sql);

pst.executeUpdate();

System.out.println("Dados inseridos com sucesso!!!"); }catch(SQLException sqle){

System.out.println("Não foi possível inserir os dados!!");

} }

11. Alterar a classe:

String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)"; pst = con.prepareStatement(sql); pst.setInt(1,2); pst.setString(2,"José"); pst.setInt(3,28); pst.executeUpdate();

12. Criar o classe EmpregadoDAO e o método grava:

import java.sql.Connection;

(3)

import java.sql.SQLException; public class EmpregadoDAO {

public static int grava(int codigo, String nome, int idade) { Connection con = GerenteConexao.getConexao();

PreparedStatement pst = null; int ret = 0;

try {

String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)"; pst = con.prepareStatement(sql);

pst.setInt(1, codigo); pst.setString(2, nome); pst.setInt(3, idade); ret = pst.executeUpdate();

System.out.println("Dados inseridos com sucesso!!!"); } catch (SQLException sqle) {

System.out.println("Não foi possível inserir os dados!!"); }

return ret; }

}

13. Imagine criar um método grava para uma tabela com 100 campos! Então chegou a hora de criarmos uma

classe bean no pacote modelo para que possamos instanciar objetos dessa classe.

package modelo;

public class Empregado {

private int codigo;

private String nome;

private int idade;

public int getCodigo() {

return codigo;

}

public void setCodigo(int codigo) {

this.codigo = codigo;

}

public String getNome() {

return nome;

}

public void setNome(String nome) {

this.nome = nome;

}

public int getIdade() {

return idade;

}

public void setIdade(int idade) {

this.idade = idade;

}

(4)

public String toString(){

return "Código = "+getCodigo()+

"\nNome = "+getNome()+

"\nIdade = "+getIdade();

}

}

14. Agora vamos atualizar o nosso método grava, passando como parâmetro um objeto e não mais cada um

dos campos:

public static int grava(Empregado empregado) {

Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null;

int ret = 0; try {

String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)"; pst = con.prepareStatement(sql);

pst.setInt(1, empregado.getCodigo()); pst.setString(2, empregado.getNome()); pst.setInt(3, empregado.getIdade()); ret = pst.executeUpdate();

System.out.println("Dados inseridos com sucesso!!!"); } catch (SQLException sqle) {

System.out.println("Não foi possível inserir os dados!!"); }

return ret; }

15.

Vamos testar o nosso método grava, para isso vamos criar uma classe de teste, chamada

TestaEmpregadoDAO:

TestaEmpregadoDAO:

public class TestaEmpregadoDAO {

public static void main(String args[]){ Empregado empregado = new Empregado(); empregado.setCodigo(3); empregado.setNome("Luiz"); empregado.setIdade(45); EmpregadoDAO.grava(empregado); } }

16. Agora vamos criar o método altera:

public static int altera(Empregado empregado) {

Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null;

int ret = 0; try {

String sql = "UPDATE EMPREGADO SET NOME = ?, IDADE = ? WHERE CODIGO = ?"; pst = con.prepareStatement(sql);

pst.setString(1, empregado.getNome()); pst.setInt(2, empregado.getIdade()); pst.setInt(3, empregado.getCodigo()); ret = pst.executeUpdate();

System.out.println("Dados atualizados com sucesso!!!"); } catch (SQLException sqle) {

(5)

System.out.println("Não foi possível atualizar os dados!!"); sqle.printStackTrace();

}

return ret; }

17. Vamos criar o método exclui:

public static int exclui(int codigo) {

Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null;

int ret = 0; try {

String sql = "DELETE FROM EMPREGADO WHERE CODIGO = ?"; pst = con.prepareStatement(sql);

pst.setInt(1, codigo); ret = pst.executeUpdate();

System.out.println("Dados excluído com sucesso!!!"); } catch (SQLException sqle) {

System.out.println("Não foi possível excluir os dados!!"); sqle.printStackTrace();

}

return ret; }

18. Criar um método para montar o objeto:

public static Empregado le(int codigo) {

Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null;

ResultSet rs = null;

Empregado empregado = null; try {

String sql = "SELECT * FROM EMPREGADO WHERE CODIGO = ?"; pst = con.prepareStatement(sql);

pst.setInt(1, codigo); rs = pst.executeQuery();

if (rs.next()){

empregado = new Empregado();

empregado.setCodigo(rs.getInt("codigo")); empregado.setNome(rs.getString("nome")); empregado.setIdade(rs.getInt("idade")); }

System.out.println("Dados excluído com sucesso!!!"); } catch (SQLException sqle) {

System.out.println("Não foi possível excluir os dados!!"); sqle.printStackTrace();

}

return empregado; }

19. Para testar o método Le(), vamos criar o método toString na classe Empregado;

public String toString(){

return "código = "+getCodigo()+ "\nNome = "+getNome()+ "\nIdade = "+getIdade(); }

20. Vamos criar outro método para ler todos os empregados do banco de dados:

public static List<Empregado> leTodos() {

(6)

List <Empregado> empregados = new ArrayList(); Connection con = GerenteConexao.getConexao(); Statement st = null;

ResultSet rs = null;

Empregado empregado = null; try {

st = con.createStatement();

rs = st.executeQuery("SELECT * FROM EMPREGADO;");

while (rs.next()){

empregado = new Empregado();

empregado.setCodigo(rs.getInt("codigo")); empregado.setNome(rs.getString("nome")); empregado.setIdade(rs.getInt("idade")); empregados.add(empregado); }

System.out.println("Dados lidos com sucesso!!!"); } catch (SQLException sqle) {

System.out.println("Não foi possível ler os dados!!"); sqle.printStackTrace();

}

return empregados; }

Parte II – Desenvolvimento Web

21. Vamos criar um formulário para inserir os campos:

<div>

<form name="form1" action="Controle" > Matrícula:<br>

<input type="text" name="matricula"><br><br> Nome:<br>

<input type="text" name="nome"><br><br> Idade:<br>

<input type="text" name="idade"><br><br> <input type="submit" value="Incluir">

</form> </div>

22. Clicar no botão submit e ver o resultado

23. Vamos criar o Servlet Controle:

a. Criar um pacote chamado servlet em “Pacotes de código fonte”

b. Criar um servlet com o nome Controle dentro do pacote servet criado

24. Clicar novamente no botão submit e ver o resultado novamente

25. Apagar os comentários do método: protected void processRequest

26. Apagar todo o conteúdo do método: protected void processRequest

27. Agora vamos adicionar o .jar da aplicação que contém as informações necessárias ao nosso projeto web:

a. Primeiro vamos criar o .jar, clicando com o botão direito sobre a aplicação e escolhendo a opção

build ou construir se estiver em português

b. Depois procure o caminho da aplicação e adicione o .jar que se encontra dentro do diretório dist

28. Receber os dados dentro do método processRequest:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

(7)

Empregado empregado = new Empregado(); PrintWriter out = response.getWriter(); try { empregado.setCodigo(Integer.parseInt(request.getParameter("matricula"))); empregado.setNome(request.getParameter("nome")); empregado.setIdade(Integer.parseInt(request.getParameter("idade"))); out.println(empregado); } finally { out.close(); } }

29. Para gravar, altere o servlet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException { Empregado empregado = new Empregado(); PrintWriter out = response.getWriter(); try { empregado.setCodigo(Integer.parseInt(request.getParameter("matricula"))); empregado.setNome(request.getParameter("nome")); empregado.setIdade(Integer.parseInt(request.getParameter("idade"))); EmpregadoDAO.grava(empregado); } finally { out.close(); }

30. Para verificar qual a ação foi executada, use o mesmo name para os botões e um value para cada botão.

<input type="submit" value="grava" name="acao">

<input type="submit" value="exclui" name="acao">

31. Agora altere o servlet para verificar qual a ação e realizá-la:

try {

empregado.setCodigo(Integer.parseInt(request.getParameter("matricula"))); empregado.setNome(request.getParameter("nome"));

empregado.setIdade(Integer.parseInt(request.getParameter("idade")));

String acao = request.getParameter("acao"); if (acao.equals("grava")){ EmpregadoDAO.grava(empregado); }else if(acao.equals("exclui")){ EmpregadoDAO.exclui(empregado.getCodigo()); } out.print(empregado); } finally { out.close(); }

Referências

Documentos relacionados

Resumo - Teoriza-se sobre a importância da restauração como uma ferramenta para a conservação ambiental através do uso de técnicas nucleadoras capazes de facilitar o

As proteínas que variaram mais neste estudo foram as três classes de PRPs (bPRPs, gPRPs e aPRPs), enquanto a estaterina foi a proteína que menos variou

Considerando esse fato, tendo contato direto com os livros didáticos de Matemática ao longo da minha trajetória profissional e refletindo sobre as questões que foram

Foi possível, através deste trabalho, tomando como referência o estudo de caso, observar e relatar a relevância da sistematização da prática da assistência de enfermagem

Diante dos resultados encontrados nesta pesquisa, verificou-se que o espaço articular coxofemoral, assim como a dor articular do quadril não sofrem influência direta

Dentro desse contexto, o objetivo deste estudo foi analisar a presença da madeira de reação pela assimetria da medula na madeira em árvores de clone de Eucalyptus

Porque a segunda marca é uma evidente imitação da primeira, deve ser decretada a anulação do seu registo, por violação do disposto nos artigos 93.°, n.° 12.°, 94.° e 172.°