Espera-se que você já possua algum conhecimento em java e orientação a objetos, bem como html e servlets/jsp.
Resumo da aplicação:
Esta aplicação exemplo será um sistema de estoque, onde poderemos cadastrar, listar, atualizar e deletar um produto.
Este tutorial está dividido em duas partes: a primeira é a criação do código que acessará o banco de dados, e a segunda parte será o código que utilizará a classe criada na primeira parte.
Primeiro passo: Criação do banco de dados.
Abra seu cliente sql favorito para o seu banco de dados e crie a tabela de produtos. Supondo que você esteja usando o mysql pode ser assim o scritp:
CREATE TABLE `produto` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nome` text NOT NULL,
`descricao` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
Segundo Passo: Criando sua classe que represente essa tabela.
Voce precisa de uma Classe-Entidade para seu sistema, a fim de desfrutar dos benefícios da orientação a objetos.
public class Produto{
private int id;
private String nome;
private String descricao;
//getters e setters
public void setId(int id){
this.id = id;
}
public int getId()
return this.id;
}
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return this.nome
}
public void setDescricao(String descricao ){
this. descricao = descricao ;
}
public String getDescricao(){
return this.descricao;
}
}//fim da classe Produto
Terceiro Passo: Criando seu DAO
DAO (Data Access Object) se refere a classe que irá fazer a comunicação de seu sistema com o banco de dados. Esse padrão é muito importante. Ele promove a reutilização de código, também promove a boa manutenção do código pois ele não deixa que o código de acesso ao banco de dados fique misturado com outras partes da aplicação que possuem outros objetivos.
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.util.List;
import java.util.ArrayList;
public class ProdutoDAO{
private Connection con;//objeto connection que será usado nos métodos abaixo
/*
* Construtor que recebe como parametro uma conexao com o banco de dado.
*/
public ProdutoDAO(Connection con){
this.con = con;
}
public void cadastrar(Produto produto) throws Exception {
PreparedStatement p =
con.prepareStatement("insert into produto (nome, descricao) values (?,?)");
p.setString(1, produto.getNome());
p.setString(2, produto.getDescricao());
p.executeUpdate();
p.close();
}
public void deletar(Produto produto) throws Exception {
PreparedStatement p = con.prepareStatement("delete from produto where id = ?");
p.setInt(1, produto.getId());
p.executeUpdate();
p.close();
}
public void update(Produto produto) throws Exception {
PreparedStatement p =
con.prepareStatement("update produto set nome = ?, descricao = ? where id = ?");
p.setString(1, produto.getNome());
p.setString(2, produto.getDescricao());
p.setInt(3, produto.getId());
p.executeUpdate();
p.close();
}
public List<Produto> listarTodos() throws Exception{
List<Produto> produtos = new ArrayList<Produto>();
PreparedStatement p = con.prepareStatement("select * from produto");
ResultSet rs = p.executeQuery();
while(rs.next()){
Produto produto = new Produto();
produto.setId(rs.getInt("id"));
produto.setNome(rs.getString("nome"));
produto.setDescricao(rs.getString("descricao"));
produtos.add(produto);
}
rs.close();
p.close();
return produtos;
}
}//fim da classe ProdutoDAO
Ok, está pronta toda nossa comunicação com o banco de dados.import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.util.List;
import java.util.ArrayList;
public class ProdutoDAO{
private Connection con;//objeto connection que será usado nos métodos abaixo
/*
* Construtor que recebe como parametro uma conexao com o banco de dado.
*/
public ProdutoDAO(Connection con){
this.con = con;
}
public void cadastrar(Produto produto) throws Exception {
PreparedStatement p =
con.prepareStatement("insert into produto (nome, descricao) values (?,?)");
p.setString(1, produto.getNome());
p.setString(2, produto.getDescricao());
p.executeUpdate();
p.close();
}
public void deletar(Produto produto) throws Exception {
PreparedStatement p = con.prepareStatement("delete from produto where id = ?");
p.setInt(1, produto.getId());
p.executeUpdate();
p.close();
}
public void update(Produto produto) throws Exception {
PreparedStatement p =
con.prepareStatement("update produto set nome = ?, descricao = ? where id = ?");
p.setString(1, produto.getNome());
p.setString(2, produto.getDescricao());
p.setInt(3, produto.getId());
p.executeUpdate();
p.close();
}
public List<Produto> listarTodos() throws Exception{
List<Produto> produtos = new ArrayList<Produto>();
PreparedStatement p = con.prepareStatement("select * from produto");
ResultSet rs = p.executeQuery();
while(rs.next()){
Produto produto = new Produto();
produto.setId(rs.getInt("id"));
produto.setNome(rs.getString("nome"));
produto.setDescricao(rs.getString("descricao"));
produtos.add(produto);
}
rs.close();
p.close();
return produtos;
}
}//fim da classe ProdutoDAO
Na próxima parte deste tutorial explicarei como criar um Servlet cliente de nosso DAO
Quando eu digo cliente, quero dizer quem vai utilizar os serviços (métodos) providos pela classe ProdutoDAO. Esse cliente pode ser uma aplicação web ou desktop/swing. Vamos fazer um cliente web através de servlets e jsp com jstl.
Att
Gustavo Marques.
Muito bom, bem explicado!
ResponderExcluir