Boa noite a todos. comecei a fazer uma pequena aplicação em java com swing. ficou a te interessante. poren so utiilazava uma tabela, agora gostaria de relaciona-la com outra.
tabela contato
seria uma contato pode nao ter nem uma forma de contato ou varias formas.
Não entendi sua dúvida, está com problemas para fazer o select no banco, o preenchimento das informações no Bean ou já possui todas as informações e quer saber como colocá-las na tela? Se possível posta a parte do código q vc está com dúvidas.
Obrigado pela atenção.
Tem razão. Eu estou patinando na implementação do DAO.
como as defino na classe (ligação de uma classe na outra)
e depois como as coloco na tela.
Não entendi direito o q vc disse, mas o que vc precisa é simplesmente ter uma variável que instancie outra classe, ou seja, relacione uma com a outra, vou postar um exemplo completo abaixo:
public class Pessoa {
private long idPessoa;
private String nome;
// Neste caso Pessoa pode conter 0 ou mais endereços
private List<Endereco> listaEndereco = new ArrayList<Endereco>();
// Neste caso Pessoa só pode ter um telefone
private Telefone telefone = new Telefone();
public long getIdPessoa() {
return idPessoa;
}
public void setIdPessoa(long idPessoa) {
this.idPessoa = idPessoa;
}
public String getNomeRazaoSocial() {
return ConverteDados.toUpperCase(nomeRazaoSocial);
}
public void setNomeRazaoSocial(String nomeRazaoSocial) {
this.nomeRazaoSocial = nomeRazaoSocial;
}
public void setListaEndereco(List<Endereco> listaEndereco) {
this.listaEndereco = listaEndereco;
}
public List<EnderecoEletronico> getListaEndEletronico() {
return listaEndEletronico;
}
public int getTelefone() {
return telefone;
}
public void setTelefone(int telefone) {
this.telefone = telefone;
}
}
Sobre a persistência, no caso acima eu geralmente faço uma classe para persistir cada um dos objetos (Pessoa, Endereço, Telefone), logo após persistir pessoa faço a persistência dos outros dois, sendo que no caso exemplificado acima faço um laço para persistir cada objeto Endereço.
É isso mesmo, faz uma lista d objetos com os objetos q vc precisa, para persistir é o mesmo q qualquer outro, a diferença é q vc pode setar o autoCommit como false para manter a integridade dos dados, segue exemplo básico:
// Persistir Pessoa
public boolean inserirPessoa(Pessoa p) {
try {
Connection con = ConnectionFactory.getConnection(); // Abre uma nova conexão
con.setAutoCommit(false); // Seta a opção autoCommit para "False"
PreparedStatement ps = con.prepareStatement("comando SQL para inserir pessoa"); // Comando para inserir a pessoa no banco
ps.executeUpdate(); // Executa o update na tabela
// Faz a persistência de cada endereço utilizando a mesma conexão
for (Endereco e : p.getListaEndereco) {
this.inserirEndereco(con, e);
}
// Se tudo for persistido corretamente faz o commit e fecha o Statement
con.commit();
ps.close();
} catch (SQLException ex) {
// Se alguma excessão ocorrer faz o rollback em todas as alterações (inclusive na pessoa)
con.rollback();
// Tratamento para excessão SQL
} finally {
// Independente do resultado volta o autoCommit para "True" e fecha a conexão
con.setAutoCommit(true);
con.close();
}
}
// Persistir Endereco
public boolean inserirEndereco(Connection con, Endereco end) {
try {
// Persiste o endereço no banco utilizando uma conexão existente
PreparedStatement ps = con.prepareStatement("comando SQL para inserir endereco");
ps.executeUpdate();
ps.close();
} catch (SQLException ex) {
throw ex;
}
}
Um detalhe, já li alguns artigos sobre inserção multipla de dados, ou seja, utilizar o INSERT para inserir 2 ou mais endereços, mas não fui muito a fundo nisso, por enquanto o código acima já é uma boa base p/ o q preciso.