[quote=Linkel]Stored Procedure, Views e talz não é particularidade do Oracle, como todos aqui sabem…
A questão muito bem levantada é: o controle da regra de negócio…
Se você sai espalhando SP, Fuctions e talz em pontos específicos da regra do negócio então isso lhe será um problema se um dia seu BD escolhido estiver obsoleto ou muito caro para o fim a que se destina, considerando desde BD’s do mundo OpenSource até o Oracle…
Ainda bem que existe o PostgreSQL! Digo isso por causa desses recursos de banco que vez-por-outras somos tentados a usar, sendo que o PostgreSQL não faz feio perto do Oracle, na minha opinião, principalmente por ser totalmente livre…
O fato de se usar um enginer JDBC de acesso não prediz que sua aplicação JÁ está amarrada a qualquer banco de dados; se um dia precisar mudar é só adicionar o seu Jar correspondente e mudar a String de acesso e de driver, simplesmente;
Por essas e outras eu utilizo o verdadeiro SQL com um mínimo de recursos possíveis vindos do BD dentro do meu código java, encapsulado à minha aplicação… É uma forma de se obter mais controle e facilitar ocorrências de manutenções…
Cada um tem suas experiências…
Um abraço!
[/quote]
Será?
Tente rodar um comando desses no MySql, SqlServer, etc.
select SEQ_QUALQUER.nextval from dual
ou este
select decode( TIPO_MOVIMENTO, ‘E’, 1, -1 ) from CORRECOES
etc.
Existem particularidades do banco. Só o MacGiver consegue programar no JDBC puro numa linguagem que todos os bancos entendem. Quando vc trabalha com milhões de registros, uma consulta com funções analíticas, por exemplo, fazem toda a diferença. Vc pode optar por trazer pronto do banco em segundos ou ficar trazendo tudo pro Java e processando em horas. Pra aplicações pequenas realmente não faz muita diferença.
Outra coisa, vc está falando num projeto SÓ em Java.
Prefiro ter a regra do negócio no banco do que no programa em Java e ficar preso ao Java ou ter que reescreve a regra de negócio na outra linguagem que por ventura eu venha a utilizar (projetos paralelos, troca de tecnologia, etc). Aliás, linguagens de programação evoluem ou ficam obsoletas muito mais rapidamente que os banco de dados, tanto que o tão esperado banco OO até hj não teve a aceitação prevista. Basta vc pegar os posts do Java de 2 anos atrás pra vc ver o tanto de “novidades” que surgiram. Tem hora que até desanima. Nem o Java dentro do Oracle teve (creio que foi um dos maiores fiascos da Oracle). Deixar de ficar preso ao banco pra ficar preso à linguagem pra mim não tem muita diferença, conceitualmente falando.
A idéia não é sair espalhando a regra de negócios em 300 lugares e sim centralizá-la em local só. Que seja no Java ou no Oracle. Só que no Oracle é mais rápido.
Realmente o PostgreSQL não faz feio perante o Oracle. Citei o Oracle pq é o banco que ele utiliza. O fato de ser OpenSource/livre pra mim não faz nenhuma diferença e, como já disse em posts anteriores, apostaria muito mais as fichas no Oracle do que num banco OpenSource por que a lei do capitalismo dá vantagens competitivas.
Particularmente, não gosto muito de transformar “bancos de dados” em “tamboretes de dados”. Usar o Oracle só para guardar informação é um desperdício enorme. Sei que estou um pouco contra a corrente do Hibernate e do SQL ANSI puro, mas, tirando as facilidades que o Hibernate o JPA trazem no início de projeto (que pra mim nem fazem tanto diferença por causa de uma metodologia adotada), não creio que seja melhor perder a velocidade de processamento em troca disto.
Sobre manutenção, existem projetos e projetos. No nosso a manutenção é tranquila porque temos certeza que as coisas estarão apenas em um lugar. Creio que isto não tem muito a ver com a regra estar no Java ou no Oracle e sim em como o projeto foi desenvolvido.