Pegando valores de classes diferentes

5 respostas
leosjcti

Galera, tenho uma duvida, estou modificando algumas coisas em um sistema totalmente sem orientação a objetos…
Muitas consultas no banco de dados funcionam dessa forma.

select a.nome, b.codigo from usuario a, cliente b where a.codigo = b.codigo

ai voce pega o resultado disso naturamente…

até ai tudo bem… Mas eu queria parar de ficar fazendo esse tipo de select e usar mesmo os conceitos de POO.
Criaria um DAO e traria os dados do usuario dessa forma

nome = usuario.getNome();

mas e quando há esse relacionamento? o que eu faço? pra trazer os dados de usuario que sao iguais aos de cliente igual esta no select?

não sei se fui claro pessoal… preciso de ajuda…

valeu

5 Respostas

nel

Oi,

trata-se de um select e não de objetos em si.
A questão é o tipo de tratamento que tu precisa fazer com o retorno, simples assim.
Se ambos os códigos devem ser iguais, obviamente, o select deve ser dessa forma, não tem como fugir.

Podes criar até um objeto com associação, contendo nome e ambos objetos, usuário e cliente, algo como um VO.
Mas enfim, vai da sua análise, mas o select é isso ai.

JoaoBluSCBR

Sim, igual.

Um DAO é uma classe onde passando parâmetros, será montado o select tipico, depois
com o retorno criado um objeto e retornado a quem executou o DAO.metodo.

No final das contas, dentro do DAO, o que vc vai fazer sao selects como aquele que vc descreve. Não há outra forma.

Entao o DAO, na orientacao a objeto tem o sentido de ser a classe única dedicada aos selects, inserts e coisas do genero.

Constroi-se o DAO apenas para não ficar fazendo selects perdidos pelas outras classes. Assim fica organizado.

leosjcti

entendi… entao eu teria que criar um metodo para cada select diferente que eu tiver no meu sistema?
e quando precisar do retorno desse select, chamo esse metodo especifico… ?
Legal seria se eu conseguisse manter o mesmo relacionamento do banco com as classes, ai eu poderia fazer isso de outra forma e economizar SQL e metodos

nel

leosjcti:
entendi… entao eu teria que criar um metodo para cada select diferente que eu tiver no meu sistema?
e quando precisar do retorno desse select, chamo esse metodo especifico… ?
Legal seria se eu conseguisse manter o mesmo relacionamento do banco com as classes, ai eu poderia fazer isso de outra forma e economizar SQL e metodos

Para isso que se faz a modelagem do sistema, ou ao menos, tenta-se.
Dessa forma, você consegue verificar o quanto de código vai enxugar e da melhor forma que você poderá utilizar isso.
Mas há momentos em que não tem como fugir, você tem de especificar os campos que quer trazer, a forma como vai busca-los e etc.
Você pode utilizar de vários artificios e ir montando uma query e o retorno dela de acordo com os parametros recebidos, mas isso você tem de parar e analisar as peculiaridades do teu sistema, as necessidades dele e etc.

Evite a primeiro momento pensar em programação, veja o que precisa e depois tente pensar voltado ao Java e SQL.
Como por exemplo, “meu sistema precisa obrigar o usuário a digitar o nome” e não “vou fazer um if porque o nome é obrigatório”.
Foi um exemplo ridiculo mas tu entende né?

Abraços!

ViniGodoy

Por favor, poste dúvidas de banco de dados no nosso fórum específico sobre o assunto. Tópico movido.

Criado 29 de setembro de 2011
Ultima resposta 29 de set. de 2011
Respostas 5
Participantes 4