Algumas dúvidas sobre DAOs

2 respostas
P

Boa tarde,

Já faz algum tempo que venho estudando a apostila de java para web da Caelum, durante o tempo que estudei o capítulo de JDBC anotei algumas dúvidas e não encontrei respostas para elas na internet. Gostaria de saber se podem me ajudar:

[list]Como fazer SELECTs com clausulas WHERE em DAOs?

a. Deve haver um SELECT para cada campo da tabela;

b. SELECTs apenas para campos que interessam em pesquisas;

c. Não devem haver SELECTs, mas sim filtragem da lista devolvida pelo SELECT de tudo.

[/list]

[list]E SELECTs que consideram mais de um campo da tabela?[/list]

[list]Como proceder com DAOs que devem conter outros DAOs, por exemplo um ‘vendedor’ ao qual pertencem vários ‘pedidos’?[/list]

[list]Onde fechar a conexão do banco de dados para os DAOs ensinados na apostila da Caelum fj-21?[/list]

2 Respostas

peczenyj

O DAO mapeia um objeto em uma ou mais tabelas no banco de dados.

Vc deveria usar o DAO da forma que fizer mais sentido. Expor todo o Banco de dados pode ser desnecessário até pq vc tem particularidades em um Banco que não tem no mundo OO.

Agora…

Como fazer SELECTs com clausulas WHERE em DAOs?

Aqui o seu DAO usa jdbc e queries sql de forma explicita. Eu diria que depende, porém gerar o sql que retorna o que vc quer é util em boa parte, senão todos, dos casos. Agora imagine que o seu DAO usa Hibernate… :wink:

tnaires

Oi.

<blockquote><div class="quote-author">pepper:</div>[list]Como fazer SELECTs com clausulas WHERE em DAOs?

a. Deve haver um SELECT para cada campo da tabela;

b. SELECTs apenas para campos que interessam em pesquisas;

c. Não devem haver SELECTs, mas sim filtragem da lista devolvida pelo SELECT de tudo.

[/list]</blockquote>

Filtragem da lista devolvida não é muito eficiente. O melhor é trazer do banco apenas os resultados da consulta. Fazer um select para cada campo não é muito viável também. Das alternativas que você colocou, a melhor é a b.

Essa pergunta eu não entendi direito. Mas o ideal é você recuperar todos os campos da entidade para que o objeto correspondente ao registro não fique inconsistente.

Não faça composição de DAOs: mantenha apenas um DAO por entidade. Eles devem ser utilizados em conjunto em uma camada superior.

DAOs não devem abrir nem fechar conexões, tampouco transações. Injete as conexões no DAO, e antes de utilizá-lo certifique-se que existe uma transação em andamento. Dessa forma você pode usar vários DAOs na mesma transação.

Criado 11 de julho de 2010
Ultima resposta 12 de jul. de 2010
Respostas 2
Participantes 3