Consultas a banco de dados

Olá pessoal,

gostaria de saber qual a melhor forma de receber os dados
de uma consulta a um banco de dados?

Eu envio as consultas para uma classe, um bean na maioria das vezes,
que trata todas as consultas, insercoes, exclusoes do banco de dados,
porem sao varias as tabelas trabalhadas com os diferentes tipo de dados.
Minha pergunta é; será interessante ter uma única função e esta retornar
um ResultSet? (quais problemas eu teria pois não posso fechar o rs, um
alto consumo de memória?)
É menhor ter uma classe bean para cada tabela do banco de dados e
a cada consulta eu receber o objeto desta classe num ArrayList? (e quando eu nao quiser todos os campos da tabela, vou ter que fazer uma outra funcao ‘setando’ elementos da tabela que desejo?)

O que devo usar? ha alguma outra opcao?

Obrigado![/i]

Retornar os dados em objetos, no caso ArrayList, eh o Pattern “Value Object”… pessoalmente nao gosto dele por precisar armazenar em memoria tudo antes, mas de qualquer maneira no meu caso em especifico nao faz mta diferenca, ja que o VO tem sentido qdo o DB server e o local onde a requisocao foi feita estao longes ( ou seja, qdo a rede pode ser um problema ). Ai sim encapsular tudo e pegar de uma vez soh eh melhor.

Acho simples e pratico retornar o objeto result set e trabalhar com ele em outras camadas, apesar disso acabar misturando um pouco as coisas… Ao menos que voce queira encapsulacao total de camadas, retornar um result set pode ser o melhor, ja que vc nao precisa armazenar tudo em memoria antes e fica mais livre pra trabalhar com os campos que deseja…

Rafael

Trabalhar com uma classe com todo o codigo JDBC pode ser simples no comeco, mas no decorrer do seu projeto voce pode sair prejudicado com a complexidade que essa classe pode lhe causar. Se o numero de tabelas aumenta, mais metodos e mais confuso pode ser tornar todo o codigo dentra dessa classe.

Existem uma serie de Engines e Frameworks que cuidam da persistencia de Dados, como o TopLink, o Castor, etc… Na maioria desses Engines voce vai perceber que alguns implementam o pattern DAO (Data Access Object) que pode retratar o mapeamento objeto-relacional de forma 1 para 1, ou seja, uma tabela vira uma classe Java. E nesse caso nao ha retorno de result-set e sim de VO (Value Objects, que nada mais sao que classes Java que encapsulam os objetos recuperados do banco, geralmente provenientes de varias tabelas).

O que eu faço!? Eu uso um framework de persistencia chamado BC4J que oferece varios Patterns (Data Access Objects, Value Objetcs, Paged List e Session Facade) entao eu ja me acostumei a trabalhar com o VO.

Ja chegue até a usar o DBTags do Jakarta
http://jakarta.apache.org/taglibs/doc/dbtags-doc/index.html
e nao gostei muito.
Tem outras TagLibs que pegam o result set dos Beans e usam em um loop (for) para listar todos os registros. Se eu nao me engano tem no site da Oreilly http://www.oreilly.com/catalog/jserverpages2/
Voce pode baixar os exemplos do livro, as tags sao razoaveis, ja usei tambem.

Enfim, das duas formas vai funcionar, o detalhe mais importante é como tornar mais reusavel o seu código e como tornar a manutencao mais simples e eficaz. Nesse caso um bom Framework que usa varios Design Patterns seria o mais indicado. Mais que eu ja fiz muito codigo com result set pra lá e pra cá, isso eu fiz… :wink:

Mais como funciona esses FRAMEWORKS, por exemplo minha aplicação tem persistencia de trafego de Dados, ou seja inclusão,exclusão,alteração tudo isso em rede, os reflexos do BANCO na aplicação tem de ser imediatos,e o reflexo da aplicação tb …

Poderiam me dar uma explicação legal nisso ?
:roll:

falow t+

Na verdade a idéia é justo gerenciar a persistência a partir destes componentes, então os componentes persistem os dados quando os dados forem alterados, da mesma forma, se os dados forem alterados de uma fonte externa, os componentes devem ser atualizados, para evitar fazer isto tudo “na munheca” são utilizadas tecnologias como BC4J e/ou EJB.

Como eu fico conhecendo estas tecnologias mais a fundo ?

Onde eu encontro um materia legal pra ver …

Tem algum livro bom ?

Valew t+

Alguem aqui ja usou o Castor? Se usou usa com o suporte a JDO?

Fui lá no site www.castor.org e não entendi bem como posso usar esse projeto. Gostaria de uma ajuda nessa questão e links para outros frameworks que fazem a mesma coisa.

[quote=“anjomal”]Como eu fico conhecendo estas tecnologias mais a fundo ?

Onde eu encontro um materia legal pra ver …

Tem algum livro bom ?

[/quote]

Você encontra um material legal sobre EJB em www.theserverside.com
Tem um livro lá “Mastering Enterprise Java beans” que é muito bom!
Abraços!

anjomal
aqui no GUJ eu escrevi um artigo sobre como retirar codigo SQL do seu codigo java
eu considero isto uma pratica super necessaria para qualquer aplicacao