Como vocês costumam fazer selects e updates nas suas aplicações que utilizam banco de dados ?
Estive pensando se seria vantagem para toda e qualquer consulta, criar uma stored procedure no banco, mesmo que seja para um simples select como “select * from clientes” por exemplo.
Aí dentro do programa java chamar esta stored procedure para fazer as consultas ou os updates passando os parâmetros e tal…
Pensei nisso para o caso de desenvolver aplicações para vários bancos diferentes como Oracle e MSSQL Server, que a sintaxe é diferente. Aí cada banco teria o seu select apropriado dentro da sp
OBS.: Irei utilizar somente JDBC. Não irei usar Hibernate nem nada parecido…
Select dentro de stored procedure (é bom ?)
7 Respostas
Aqui na empresa, dependendo do projeto e do cliente nós usávamos Stored procedures também, pois dava uma certa “liberdade” para o DBA depois alterar essas procedures ao gosto deles, sempre, claro, respeitando as regras documentadas do sistema.
O problema é se precisar um banco de dados que não tenha Stored Procedure, como MySql ou o saco de dados Access.
Você pode fazer algumas classes que gerem as querys SQL usando a sintaxe de cada banco, eu lembro que fiz um esquema desse em PHP há um tempo atrás.
[]'s
Eh, pode ser uma boa vantagem… assim, se voce tem um dba, ele nao precisa ficar mexendo nos arquivos de sql da aplicacao, ou ficar pedindo pra vc atualizar a toda hora… ( ta, pode estar em um cvs, mas a ideia eh essa )…
Com SP, como ja disse o daniel, da pra ter mais liberdade pra usar as bizarrices de cada banco, o que pode ajudar na performance.
Ah, e o lance de poder usar identificadores no estilo “:variavel” quando voce trabalha com procedures eh um tesao… muito melhor que o extremamente limitado “?” do PreparedStatement ( limitado nas situacoes que voce nao sabe a ordem dos campos em tempo de projeto ).
Apenas cuide para nao prender a tua aplicacao a procedures, afinal, nao sao todos os bancos que suportam.
Rafael
O ideal para uma aplicação é abstrair o acesso aos dados usando o padrão DAO. Assim, os bancos de dados que possuem suporte para SP poderão se utilizar desse recurso; independente disso, o acesso aos dados pelos objetos DAO permenece transparente para a aplicação.
Pena que sou totalmente leigo em DAO. Já ouvi falar bastante mas preciso aprender ainda como funciona. Tem umas apostilas ou links bons que vcs conhecem sobre o assunto ?
Valeu as demais dicas galera. Brigadão…
Cara, a SUN tem um pattern pra DAO, mas eu não gosto muito não. Prefiro usar o Hibernate pra fazer DAO. Mas como vc disse que não quer Hibernate, dá uma olhada lá.
http://java.sun.com/blueprints/patterns/DAO.html
[]'s
Rodrigo C. A.
Beleza, vou ver lá
Valeu 