Eu to fazendo um projeto e estou fazendo o seguinte. Tenho os pacotes
Modelo - Ficam as classes iniciais, como Cliente.java, aqui ficam os atributos, contrutores e os métodos getters e setters.
Visão - Ficam as Janelas do sistema.
Negócio - Aqui é onde ficam as regras de negócio.
Persistencia - Aqui é onde ficam as DAO, na minha DAO é onde os dados são inseridos no Banco de Dados.
Um exemplo de cada pacote:
package Modelo;
public class Cliente {
private int id;
private int telefone;
private int celular;
private String nome;
private String sobrenome;
private Endereco endereco;
public Cliente(int telefone, int celular, String nome,
String sobrenome, Endereco endereco) {
this.telefone = telefone;
this.celular = celular;
this.nome = nome;
this.sobrenome = sobrenome;
this.endereco = endereco;
}
public Cliente(int id, int telefone, int celular, String nome,
String sobrenome, Endereco endereco) {
this.id = id;
this.telefone = telefone;
this.celular = celular;
this.nome = nome;
this.sobrenome = sobrenome;
this.endereco = endereco;
}
public Cliente(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getTelefone() {
return telefone;
}
public void setTelefone(int telefone) {
this.telefone = telefone;
}
public int getCelular() {
return this.celular;
}
public void setCelular(int celular) {
this.celular = celular;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
}
[code]package Negocio;
import java.sql.SQLException;
import Modelo.Cliente;
import Modelo.ClienteEndereco;
import Modelo.Endereco;
import Persistencia.ClienteDAO;
public class GerenciadorCliente {
public void adiciona(Cliente cliente) throws ClassNotFoundException, SQLException{
ClienteDAO clienteDAO = new ClienteDAO();
clienteDAO.adiciona(cliente);
}
public void remove(int telefone) throws SQLException, ClassNotFoundException{
ClienteDAO clienteDAO = new ClienteDAO();
clienteDAO.remove(telefone);
}
public ClienteEndereco procura(int telefone) throws SQLException, ClassNotFoundException{
ClienteDAO clienteDAO = new ClienteDAO();
return clienteDAO.retornaCliente(telefone);
}
public void editar(Cliente cliente, Endereco endereco) throws ClassNotFoundException, SQLException{
ClienteDAO clienteDAO = new ClienteDAO();
clienteDAO.atualiza(cliente, endereco);
}
public ClienteEndereco todosClientes() throws SQLException, ClassNotFoundException{
ClienteDAO clienteDAO = new ClienteDAO();
return clienteDAO.mostraTodos();
}
}
[/code]
[code]package Persistencia;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import Modelo.Cliente;
import Modelo.ClienteEndereco;
import Modelo.Endereco;
import Negocio.GerenciadorConexao;
public class ClienteDAO {
private GerenciadorConexao gc = new GerenciadorConexao();
public void adiciona(Cliente cliente) throws ClassNotFoundException, SQLException{
Connection c = gc.conectaBanco();
PreparedStatement stmt = c.prepareStatement("Insert Into Cliente (telefone, celular, primeiroNome, ultimoNome, enderecoId) values (?,?,?,?,?)");
stmt.setInt(1, cliente.getTelefone());
stmt.setInt(2, cliente.getCelular());
stmt.setString(3, cliente.getNome());
stmt.setString(4, cliente.getSobrenome());
stmt.setInt(5, (retornaMaxId()));
stmt.execute();
}
public void atualiza(Cliente cliente, Endereco endereco) throws ClassNotFoundException, SQLException{
Connection c = gc.conectaBanco();
int id = retornaId(cliente); //pegando o numero do enderecoId do cliente.
PreparedStatement stmt = c.prepareStatement("UPDATE Cliente SET telefone = ? WHERE id = ?"+
" UPDATE Cliente SET celular = ? WHERE id = ?"+
" UPDATE Cliente SET primeiroNome = ? WHERE id = ?"+
" UPDATE Cliente SET ultimoNome = ? WHERE id = ?"+
" UPDATE Endereco SET rua = ? WHERE id = ?"+
" UPDATE Endereco SET numero = ? WHERE id = ?"+
" UPDATE Endereco SET bairro = ? WHERE id = ?"+
" UPDATE Endereco SET cep = ? WHERE id = ?"+
" UPDATE Endereco SET complemento = ? WHERE id = ?"+
" UPDATE Endereco SET referencia = ? WHERE id = ?");
stmt.setInt(1, cliente.getTelefone());
stmt.setInt(2, cliente.getId());
stmt.setInt(3, cliente.getCelular());
stmt.setInt(4, cliente.getId());
stmt.setString(5, cliente.getNome());
stmt.setInt(6, cliente.getId());
stmt.setString(7, cliente.getSobrenome());
stmt.setInt(8, cliente.getId());
stmt.setString(9, endereco.getRua());
stmt.setInt(10, id);
stmt.setInt(11, endereco.getNumero());
stmt.setInt(12, id);
stmt.setString(13, endereco.getBairro());
stmt.setInt(14, id);
stmt.setString(15, endereco.getCep());
stmt.setInt(16, id);
stmt.setString(17, endereco.getComplemento());
stmt.setInt(18, id);
stmt.setString(19, endereco.getReferencia());
stmt.setInt(20, id);
stmt.execute();
}
public ClienteEndereco mostraTodos() throws SQLException, ClassNotFoundException{
Connection c = gc.conectaBanco();
Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("select * from Cliente inner join Endereco on (Cliente.enderecoId = Endereco.id)");
Cliente cliente;
Endereco endereco;
Collection<Cliente> clientes = new ArrayList<Cliente>();
Collection<Endereco> enderecos = new ArrayList<Endereco>();
while(rs.next()){
int id = rs.getInt("id");
int telefone = rs.getInt("telefone");
int celular = rs.getInt("celular");
String nome = rs.getString("primeiroNome");
String sobrenome = rs.getString("ultimoNome");
int id1 = rs.getInt("id");
String rua = rs.getString("rua");
int numero = rs.getInt("numero");
String bairro = rs.getString("bairro");
String cep = rs.getString("cep");
String complemento = rs.getString("complemento");
String referencia = rs.getString("referencia");
endereco = new Endereco(id1, rua, numero, bairro, cep, complemento, referencia);
cliente = new Cliente(id, telefone, celular, nome, sobrenome, endereco);
enderecos.add(endereco);
clientes.add(cliente);
}
ClienteEndereco ce = new ClienteEndereco(clientes, enderecos);
return ce;
}
public ClienteEndereco retornaCliente(int telefone1) throws SQLException, ClassNotFoundException{
Connection c = gc.conectaBanco();
Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("select * from Cliente inner join Endereco on (Cliente.enderecoId = Endereco.id)" +
"where Cliente.telefone = "+ telefone1);
while(rs.next()){
int id = rs.getInt("id");
int telefone = rs.getInt("telefone");
int celular = rs.getInt("celular");
String nome = rs.getString("primeiroNome");
String sobrenome = rs.getString("ultimoNome");
int id1 = rs.getInt("id");
String rua = rs.getString("rua");
int numero = rs.getInt("numero");
String bairro = rs.getString("bairro");
String cep = rs.getString("cep");
String complemento = rs.getString("complemento");
String referencia = rs.getString("referencia");
Endereco endereco = new Endereco(id1, rua, numero, bairro, cep, complemento, referencia);
Cliente cliente = new Cliente(id, telefone, celular, nome, sobrenome, endereco);
ClienteEndereco ce = new ClienteEndereco(cliente, endereco);
return ce;
}
return null;
}
public void remove(int telefone) throws SQLException, ClassNotFoundException{
Connection c = gc.conectaBanco();
PreparedStatement stmt;
stmt = c.prepareStatement("DELETE FROM Endereco WHERE (Select enderecoId FROM Cliente WHERE ? = Cliente.telefone) = Endereco.id");
stmt.setInt(1, telefone);
stmt.execute();
stmt = c.prepareStatement("DELETE FROM Cliente WHERE Cliente.telefone = ?");
stmt.setInt(1, telefone);
stmt.execute();
}
public int retornaMaxId() throws SQLException, ClassNotFoundException{
EnderecoDAO enderecoDAO = new EnderecoDAO();
return enderecoDAO.retornaMaxId();
}
public int retornaId(Cliente cliente) throws ClassNotFoundException, SQLException{
EnderecoDAO enderecoDAO = new EnderecoDAO();
return enderecoDAO.retornaId(cliente);
}
}[/code]
Não vou colocar a Visão pois ficou muito grande. O código começa na Visão, passa pelo negócio e depois vai pra Persistência onde ficam as DAOs. Creio que isso já te ajuda um pouco.