ae galera, gostaria de abrir aqui uma discussão sobre essas duas maneiras de colocar seu codigo SQL nos repositorios da aplicacao.
-> 1ª:
Colocar o código SQL diretamente dentro dos métodos das classes de repositório (inserir, remover, atualizar, ...)
-> 2ª
Definir uma interface separada com constantes do tipo String que sao os comandos SQL do repositorio e entao fazer a classe implementar essa interface e usar as constantes dentro dos metodos.
Não uso mais SQL, mas particulamente não vejo problema em deixar os SQLs nos métodos. Se você acha isso feio e quer separar, acho melhor criar um arquivo properties com as queries do que criar constantes.
Eu uso hibernate então dificil escrever SQL, mas a segunda forma parece ser mais organizado, apesar de poder aumentar consideravelmente o numero de interfaces num sistema maior (mas tb num sistema maior organizar persistencia na mão, parece meio masoquista, hehehe)
Vai usar SQL ? use DAO…
Pattern que garante que os codigos SQL não virem um virus em sua app java , concentrando tudo em um unico local…
Pense em Utilizar JPA, voce usa um acronimo do SQL , chamado EJB-QL que na minha opiniao… dispensa o uso de DAO’s , devido ao mesmo já abstrair banco de dados…
JPA = Especificação sob qual o Hibernate 3.0 foi construido… permite o uso de varios ORM’s… assim vc nao fica preso ao Hibernate
JPA = Especificação sob qual o Hibernate 3.0 foi construido… permite o uso de varios ORM’s… assim vc nao fica preso ao Hibernate[/quote]
Não inverta as coisas. JPA foi fortemente baseado no modelo do Hibernate, não o contrário. Além disso, não vejo muitas vantagens reais em se usar JPA sobre Hibernate. Ninguém fica mudando o persistence engine a todo momento, logo, se você usa Toplink/Kodo/Hibernate no começo do seu projeto, provavelmente é certo q você vá fazer deploy usando o persistence engine inicial; logo, a tal independência de persistence engine é falácia. Além disso, JPA não tem Criteria API!
[quote=Daniel Quirino Oliveira]
Não inverta as coisas. JPA foi fortemente baseado no modelo do Hibernate, não o contrário. Além disso, não vejo muitas vantagens reais em se usar JPA sobre Hibernate. Ninguém fica mudando o persistence engine a todo momento, logo, se você usa Toplink/Kodo/Hibernate no começo do seu projeto, provavelmente é certo q você vá fazer deploy usando o persistence engine inicial; logo, a tal independência de persistence engine é falácia. Além disso, JPA não tem Criteria API! :([/quote]
Ainda não vi uma alma que tenha tido coragem de trocar de um pra outro
E cada um tem os seus próprios bugs, essa história de que “todos rodam igual” é lenda.