Pessoal,
Eu tenho esse método que faz um select e retorna uma Collection:
public Collection<TbrcpRegraCondicaoPagtoPz> SelectUpgradeCondicaoDePagamento() throws SQLException{
PreparedStatement stmt =
this.connection.prepareStatement("select rcp_id cod_cond_pagto,"
+ "rcp_descricao nom_cond_pagto"
+ "from TBRCP_REGRA_CONDICAO_PAGTO_PZ"
+ "order by rcp_descricao");
ResultSet rs = stmt.executeQuery();
List<TbrcpRegraCondicaoPagtoPz> contatos = new ArrayList<TbrcpRegraCondicaoPagtoPz>();
while(rs.next()){
TbrcpRegraCondicaoPagtoPz retorno = new TbrcpRegraCondicaoPagtoPz();
retorno.setRcpId(rs.getInt("cod_cond_pagto"));
retorno.setRcpDescricao(rs.getString("nom_cond_pagto"));
contatos.add(retorno);
}
rs.close();
stmt.close();
return contatos;
}
Mas e quando eu quero fazer um select em mais de uma tabela? eu tenho q unir os beans em um só?
Bom geralmente uso em meus projetos o seguinte layout
Ex: Se tem uma tabela chamada Pai e outra chamada Filho eu crio um Bean chamado PaiVO e dentro de PaiVO eu crio uma List contendo dados de FilhoVO
Exemplo da classe PaiVO
public class PaiVO(){
private Integer idPai;
private String descricaoPai;
private List listaDeFilhos;
}
O Correto seria você ter os relacionamentos dentro do seu Bean.
Por exemplo, você tem um bean/tabela Clientes e dentro você tem um bean/tabela Cidades
o Correto seria
public class Clientes {
private Integer id;
private String nome;
private Cidades cidades; //aqui está o relacionamento dentro do Bean
}
Quando for fazer o select, além de preencher o bean Clientes, deve preencher o bean Cidades.
Outro detalhe, você tem que se preocupar com os relacionamentos One to Many, Many to One, One to One…
Por exemplo, um OneToMany, ao invés de colocar um class dentro de outra, você deve colocar uma List ou Set dentro de uma classe. Ex:
public class Clientes {
private Integer id;
private String nome;
private Set<Dependentes> dependentes; //aqui tem um SET de dependentes, ou seja, é um relacionamento OneToMany, para 1 Cliente, pode haver varios dependentes
}
Esse seria o modo ideal de trabalhar, porém usando JDBC puro é bastante trabalhoso, principalmente em relacionamentos.
Por isso eu sempre indico o pessoal a usar Hibernate, pois todas essas operações são facilmente feitas utilizando ele.
Não entendi mt bem. Por exemplo, se eu precisar fazer o select de uma query simples como esta:
select alias1.campo1,alias2.campo2
from tabela1 alias1,
tabela2 alias2
where alias1.campo1 = alias2.campo2
Eu não teria que criar uma classe chamada por exemplo Tabela1ETabela2?? e adicionar os campos la?
Cara,
Quando uso o pattern DAO executando os selects via JDBC, trato por entidades.
Tipo se uma entidade que você criou um bean tem informações em mais que 1 tabela, não tem motivo para que você não acesse as 2 tabelas neste DAO.
Existe algum relacionamento entre os objetos Tabela 1 e Tabela 2? se sim, esse relacionamento deve estar contido dentro dos BEANS. Nesse caso, você não precisaria de um novo objetoTabela1ETabela2.