Pessoal, sou novo em Java, estou estudando bastante e cheguei no topico do Hibernate.
Pelo que vi, a grande vantagem dele é ser independente do Fabricante do DB. Ok até aí…
Sempre programei usando stored procedures e acho uma boa prática.
Porém, estou chegando a conclusao que usar Hibernate chamando procedures acaba sendo meio que chover no molhado,
já que se estou usando procedure, não terei um sistema independente do DB.
Enfim, qual a opiniao de vocês sobre isso?
Qual opcao acham melhor?
- seguir usando apenas procedures e chamando-as pelo jdbc puro.
- seguir com procedures, porém chamando-as pelo Hibernate. Solução híbrida.
- esquecer as procedure e usar apenas hibernate.
Aguardo comentários.
Bruno Bertoni
Penso que stored procedure é programação orientada a banco de dados, o que não é uma boa prática, até certo ponto. Como assim?
Dentro da nossa área temos muitos “depende” e estes é um deles.
Quantos projetos você precisou portar de um SGBD para outro, mesmo após anos? Poucos ou nenhum, certo?
Isto vale tanto para o hibernate quanto para o uso de sps.
Agora, vamos pensar um pouco “orientado a objetos” e com padrões de desenvolvimento.
Uma SP roda em um SGBD e depende dele. Boa parte ou toda a lógica fica na SP. Isso implica em ter menos lógicas nos códigos fonte (eu sei, não necessariamente). Logo, qualquer alteração lógica precisa, obrigatoriamente, ser realizada em uma ou mais sps, functions, cursores, views, etc. Enquanto que, caso fosse no código, seria bem mais simples.
De qualquer forma, ainda acredito que o que deve nortear seu desenvolvimento são duas coisas: o que o cliente quer e o que você conhece bem.
Muito bom…valeu pela dica.
Então, na verdade, sempre trabalho com 5 procedures para cada entidade. Sigo sempre esse padrão nos meus projetos.
São elas:
- insert,
- update,
- delete,
- select simples
- select para grid (onde faço paginacao, sort, etc)
Ainda uso algumas ontras variacoes quando se trata de relatorios.
Quando passa a precisar de loops dentro da procedure, eu prefiro fazer no código.
Enfim, vou acabar optando por uma solucao híbrida.
Mais alguem tem opiniao sobre isso?? Quanto mais melhor…rs…
[quote=bruno_bert]Muito bom…valeu pela dica.
Então, na verdade, sempre trabalho com 5 procedures para cada entidade. Sigo sempre esse padrão nos meus projetos.
São elas:
- insert,
- update,
- delete,
- select simples
- select para grid (onde faço paginacao, sort, etc)
Ainda uso algumas ontras variacoes quando se trata de relatorios.
Quando passa a precisar de loops dentro da procedure, eu prefiro fazer no código.
Enfim, vou acabar optando por uma solucao híbrida.
Mais alguem tem opiniao sobre isso?? Quanto mais melhor…rs…
[/quote]Cuidado com híbrido. Isso pode ferrar a arquitetura da aplicação. É melhor que você escolha um e que seja esse um a apoiar sua aplicação.
Você precisa mesmo de prodecure? Se for requisito do cliente, vá em frente. Se não, sai fora. =D