Acabei de entrar num novo projeto e ao varrer o código do mesmo me deparei com uma penca de código na camada de banco (nas classes DAO) com métodos static - absolutamente todos os métodos nas classes DAO foram declarados como static.
Bem, eu pessoalmente nunca vi ninguem usando esse formato e conversando com o desenvolvedor responsável tentando explicar o pq de não usar isso acabei ficando vendido por falta de argumentos (nunca nem me imaginei usando static num dao).
Os pontos que levantei foram:
Quebra qq futura implamentação de factory (visto que vou ter de criar uma interface para que cada dao implemente).
Apesar dos dao não terem estado (foi o motivo da nossa discussão inicial) os dao tem estado transacional.
Algum outro motivo gente? Estou no caminho certo ou vcs tb defendem o uso de dao com métodos static ?
Acabei de entrar num novo projeto e ao varrer o código do mesmo me deparei com uma penca de código na camada de banco (nas classes DAO) com métodos static - absolutamente todos os métodos nas classes DAO foram declarados como static.
Bem, eu pessoalmente nunca vi ninguem usando esse formato e conversando com o desenvolvedor responsável tentando explicar o pq de não usar isso acabei ficando vendido por falta de argumentos (nunca nem me imaginei usando static num dao).
Os pontos que levantei foram:
Quebra qq futura implamentação de factory (visto que vou ter de criar uma interface para que cada dao implemente).
Apesar dos dao não terem estado (foi o motivo da nossa discussão inicial) os dao tem estado transacional ???
Algum outro motivo gente? Estou no caminho certo ou vcs tb defendem o uso de dao com métodos static ?
Woody[/quote]
Primeiro a analise PREVIA esses metodos estaticos ? não ? entao está ae um belo motivo para o programador desfazer essa lambança…
Não parece meio OBVIO que DAO tem estado transacional ? se voce quiser colocar dois DAOS dentro de uma mesma transacao… pronto… seus metodos estaticos acabaram com TUDO… voce vai ter que alterar TODA A APLICACAO… ninguem ae nunca usou XA não ? nunca precisaram fazer nada de modo atomico não ? atualizar saldo em conta corrente , fazer inclusões com dependencia entre tabelas…
algo do tipo " Deletou X e Y mas se nao conseguir incluir Z entao nao faz nada !"
?!?!?!
Tem que existir algo MUITO bem explicadinho para sair utilizando classes cheias de metodos estaticos… isso torna sua programação extremamente procedural… Ninguem que utilize a programação Orientada a Objetos de forma correta pode achar a utilização de classes com metodos estaticos uma “boa pratica” ou algo “comum”
Se você já usa o pattern DAO é prq um dia pretende usar todo o poder do mesmo… com metodos estaticos… torna tudo BEM mais dificil no futuro…
Fora que a parte das fabricas é algo muito relativo… este programador já ouviu falar em GENERICS ?
[quote]Não parece meio OBVIO que DAO tem estado transacional ? se voce quiser colocar dois DAOS dentro de uma mesma transacao… pronto… seus metodos estaticos acabaram com TUDO… voce vai ter que alterar TODA A APLICACAO… ninguem ae nunca usou XA não ? nunca precisaram fazer nada de modo atomico não ? atualizar saldo em conta corrente , fazer inclusões com dependencia entre tabelas… [/QUOTE]
Pois é, acabei de ver que escreveram uma classe utilitária pra executar querys, commits e rollbacks mas ninguém recebe a conexão como parâmetro - Estou tentando criar uma transação e veja só que dor de cabeça: só tem método static fazendo insert no banco sem que eu possa dar rollback no caso de erro …
Usei XA sim Chun, mas com métodos dao normais - como disse no início nunca me imaginei usando dao com static por causa do estado transacional mesmo (só que na hora em que estava conversando com o desenvolvedor deu branco).
[QUOTE]Se você já usa o pattern DAO é prq um dia pretende usar todo o poder do mesmo… com metodos estaticos… torna tudo BEM mais dificil no futuro… [/QUOTE]O argumento inicial dele é que os static facilitariam a codificação por simplificarem a instanciação dos objetos …
[QUOTE]
Fora que a parte das fabricas é algo muito relativo… este programador já ouviu falar em GENERICS ? [/QUOTE]Estamos usando java 1.4