DAO com métodos static  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
agodinhost
Virtual Machine Man
[Avatar]

Membro desde: 28/03/2006 21:19:16
Mensagens: 590
Localização: RJ, Tijuca
Offline

Oi gente,

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:

1) Quebra qq futura implamentação de factory (visto que vou ter de criar uma interface para que cada dao implemente).

2) 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

"The difference between theory and practice is that, in theory, there is no difference between theory and practice".
[WWW] [MSN]
chun
GUJ Master
[Avatar]
Membro desde: 08/11/2004 15:43:41
Mensagens: 1699
Localização: Curitiba/PR
Offline

agodinhost wrote:Oi gente,

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:

1) Quebra qq futura implamentação de factory (visto que vou ter de criar uma interface para que cada dao implemente).

2) 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



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 ?

Ps: Este post é uma opinião pessoal e NÃO DEVE SER ENCARADO COMO VERDADE ABSOLUTA... então... caso você não concorde... não precisa cortar os pulsos...

------
Controverso Eu ? http://www.go-java.com/blog
[WWW] [ICQ]
agodinhost
Virtual Machine Man
[Avatar]

Membro desde: 28/03/2006 21:19:16
Mensagens: 590
Localização: RJ, Tijuca
Offline

Chun,

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...


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).

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...
O argumento inicial dele é que os static facilitariam a codificação por simplificarem a instanciação dos objetos ...


Fora que a parte das fabricas é algo muito relativo... este programador já ouviu falar em GENERICS ?
Estamos usando java 1.4

Chun, valeu pelo reply!!!

"The difference between theory and practice is that, in theory, there is no difference between theory and practice".
[WWW] [MSN]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team