Persistência – Java para Web com MySQL
1.
2.
3.
4.
Criar o modelo no DBDesigner
Criar o esquema e as tabelas no MySQL
Criar um projeto Java simples, com o nome Empresa,no NetBeans
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
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
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
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
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";
String senha = "root";
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
import
import
import
java.sql.Connection;
java.sql.PreparedStatement;
java.sql.SQLException;
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;
import java.sql.PreparedStatement;
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;
}
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;
}
Vamos testar o nosso método grava, para isso vamos criar uma classe de teste, chamada
15.
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) {
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() {
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)
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")));
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();
}
Download

Persistência – Java para Web com MySQL