Persistência classe DAO x Classe Própria

5 respostas
Sandro_Machado

Ola galera.

Estou em meio a um projeto cujo me informaram que o melhor era criar Classe DAO onde conteria todos os métodos de persistência de todas as classes, pois assim caso eu mudasse de banco seria mais fácil de adaptar ao novo banco.

Pois bem, assim estou criando todos os métodos na classe DAO, o problema é que a mesma está ficando muito extensa e difícil de trabalhar, oque me pergunto, porque não colocar cada método de persistência dentro de cada Classe a que ela pertença?

Minha real dúvida é: qual seria a melhor forma? além destas duas opções que eu conheço, haveria outra melhor?

desde já agradeço.

5 Respostas

M

Olá…se sua classe DAO está ficando extensa demais, tem coisa errada, persistir um objeto, ler, alterar e excluir são 4 operações, um método genérico pode buscar um nome, um ID, um CPF, um Endereço , não deixando sua classe DAO extensa. colocar métodos de um DAO de uma classe Entidade, por exmplo, foje dos padroes MVC ( modelo, visao, controle ), traz responsabilidades para uma classe que não é dela, alto acoplamento e um código de difícil manutenção. Se está aprendendo POO, leia sobre MVC, Genéric DAO, Interfaces, é um bom começo.

Sandro_Machado

Obrigado pela resposta Marcelo, é que até o momento possuo 17 Classes que devem ser persistidas, podendo ser aumentado caso implemente uma nova funcionalidade, então com as 4 operações já são 68 métodos, oque pra mim que não tenho muita experiencia está se tornando um tanto confuso, então pensei estar fazendo algo errado. Obrigado vou ler sobre oque citaste.

E

Pra cada entidade vc deve criar um Dao próprio e não tudo em um único DAO…

Victor_Dourigam

Bom dia amigo, o problema que vc esta se deparando consiste em colocar todos os métodos um uma única DAO,deixando assim a classe extensa, tendo em vista às boas praticas de poo,temos que ter classes coesas ,logo aconselho vc fragmentar este DAO em outros menores e específicos para a entidade a persistir.

Ex: se eu tenho uma classe Funcionario e outra Cliente, eu crio um FuncionárioDao e um ClienteDao, assim tenho classes coesas e de única responsabilidade(no caso persistir cliente/funcionario).

Quando tiver um tempo pesquise um pouco sobre SOLID

Sandro_Machado

Obrigado a todos, vou segui vossos conselhos, ler sobre os assuntos citados, e vou criar classes individuais como FuncionárioDao e um ClienteDao.

Criado 9 de maio de 2016
Ultima resposta 9 de mai. de 2016
Respostas 5
Participantes 4