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.
M
maaupe
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.
Obrigado
fabiocortolan
Um exemplo do q faço geralmente é:
Defino uma classe “Pessoa”;
Defino uma classe “Telefone”;
Se essa classe Pessoa possui apenas um telefone, crio uma variável do tipo Telefone dentro da classe Pessoa:
privateTelefonefone;
Caso a pessoa possa ter 0 ou mais telefones, crio uma lista do tipo Telefone dentro da classe Pessoa:
Depois disso é só preencher com os dados do banco conforme sua necessidade.
Não sei se é a melhor forma mas para mim é a que mais funciona!
M
maaupe
Obrigado fabiocortolan.
eu tenho uma propriedade na classe pai que e um coleção é isso ?
como eu faco para persistir isso numa tabela.
sabe onde encontro material com isso ?
Muito obrigado pela ajuda.
fabiocortolan
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:
publicclassPessoa{privatelongidPessoa;privateStringnome;// Neste caso Pessoa pode conter 0 ou mais endereçosprivateList<Endereco>listaEndereco=newArrayList<Endereco>();// Neste caso Pessoa só pode ter um telefoneprivateTelefonetelefone=newTelefone();publiclonggetIdPessoa(){returnidPessoa;}publicvoidsetIdPessoa(longidPessoa){this.idPessoa=idPessoa;}publicStringgetNomeRazaoSocial(){returnConverteDados.toUpperCase(nomeRazaoSocial);}publicvoidsetNomeRazaoSocial(StringnomeRazaoSocial){this.nomeRazaoSocial=nomeRazaoSocial;}publicvoidsetListaEndereco(List<Endereco>listaEndereco){this.listaEndereco=listaEndereco;}publicList<EnderecoEletronico>getListaEndEletronico(){returnlistaEndEletronico;}publicintgetTelefone(){returntelefone;}publicvoidsetTelefone(inttelefone){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.
M
maaupe
Muito obrigado pela ajuda. Entendi tenho que ter uma propriedade que nao da mais é do que um lista de objetos(colecção) certo ?
Agora como persistir isso ?
agradeco pela sua ajuda foi de grande valia.
Bom dia !!!
fabiocortolan
É 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 PessoapublicbooleaninserirPessoa(Pessoap){try{Connectioncon=ConnectionFactory.getConnection();// Abre uma nova conexãocon.setAutoCommit(false);// Seta a opção autoCommit para "False"PreparedStatementps=con.prepareStatement("comando SQL para inserir pessoa");// Comando para inserir a pessoa no bancops.executeUpdate();// Executa o update na tabela// Faz a persistência de cada endereço utilizando a mesma conexãofor(Enderecoe:p.getListaEndereco){this.inserirEndereco(con,e);}// Se tudo for persistido corretamente faz o commit e fecha o Statementcon.commit();ps.close();}catch(SQLExceptionex){// 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ãocon.setAutoCommit(true);con.close();}}// Persistir EnderecopublicbooleaninserirEndereco(Connectioncon,Enderecoend){try{// Persiste o endereço no banco utilizando uma conexão existentePreparedStatementps=con.prepareStatement("comando SQL para inserir endereco");ps.executeUpdate();ps.close();}catch(SQLExceptionex){throwex;}}
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.
M
maaupe
fabiocortolan, bom dia muito obrigado estou implementado. depois que acabar posto o resultado.