Em um sistema que estou desenvolvendo estou tentando utilizar ao maximo os
conceitos de Design Patterns cabiveis. A maior parte das coisas estao indo
bem, MVC esta sendo aplicado de uma maneira legal, e ate o codigo SQL esta
em um arquivo Properties, para que eu nao precise recompilar os .java sempre
que precisar alterar algum sql. A ideia orinal era fazer o sistema ter o
maximo de independencia possivel de banco de dados sem deixar de usar os
recursos disponiveis para cada um ( como procedures, por exemplo ).
E eh nessa parte que tenho mais duvidas.
O que gostaria de saber eh uma boa maneira de deixar o sistema
mais livre possivel de implementacao de database sem deixar de usar os
recursos de cada um. Por exemplo, a versao stable do mysql nao suporta
stored procedures, sub selects etc, entao mesmo o codigo sql estando
fora do codigo java, logicamente se eu quisesse usar os novos recursos
ou ate mesmo migrar para um outro banco de dados seria necessario reescrever
as queries. Como ( ate onde li ) chamar procedures eh um pouco diferente de
chamar um sql “normal”, pelo jeito que estou fazendo o sistema teria que reescrever
algumas partes para usar os metodos de chamadas de procedures ao inves dos
PreparedStatement normais. Ha alguma maneira recomendada de fazer/evitar isso?
( talvez uma classe de integracao/auxiliar para executar as queries, mas nao sei
se uma generalizacao maior ainda seria bom… )
Rapaz… não tenho a solução em mão… mas na minha opinião esta “camada extra” só daria mais trabalho, e não compensaria não…
Só por curiosidade, vi que sua mensagem é de agosto, como você resolveu a situação?
bom, acabei nao fazendo da maneira que queria… to puxando os codigos sql de um arquivo texto ( como no tutorial aqui do guj ) e retornanso os resultset, o qual manipulo na camada de apresentacao… isso soh vira a ser um certo problema caso as alteracoes nos sql’s sejam muito grandes ( do meu ver, claro )… entao acho que da pra ir indo assim…
eh que tem outro lance tmb… fazer tentando seguir todos os patterns pode nao ser mto bom em relacao a performance ( como eh o caso do Swing… eh bem programado - diz a lenda -, mas por causa disso a performance cai um monte… )…
Rapaz!! Dá um desconto… ontem foi o último dia de trabalho… não tava muito ligado e confundi com a data de cadastro.
Quanto aos patterns, bom… utilizar alguma coisa “só porque ela existe” (sei que não é este o caso mas acho que você entendeu o que eu quis dizer) não compensa mesmo… Na verdade se você for ver, mesmo alguns paradigmas OO são meio “contra a performance”, polimorfismo é o exemplo mais clássico
Outra idéia seria construir/utilizar um framework que realizasse as tarefas de persistência em bancos de dados.
Desta forma a construção de classes que realizam consultas e atualizações fica bem mais simples e as instruções sql podem ser geradas “on the fly” pelas classes do framework.