Boa tarde mestre!
Uma outra estratégia interessante seria colocar a Connection dentro do DAO. O que acha?
Obrigado!
Boa tarde mestre!
Uma outra estratégia interessante seria colocar a Connection dentro do DAO. O que acha?
Obrigado!
Olá meu aluno, se fizermos isso estaremos realizando um alto acoplamento entre a conexão e o dao.
Se você precisa o do mesmo dao para bancos diferentes terá problema. Se a maneira de criar a conexão mudar você terá que modificar a classe Dao. Mas é possível fazer o que deseja sim.
Sucesso e bom estudo meu aluno.
Eu iria comentar exatamente o que o @sidronio disse no tópico. Você disse sobre o alto acoplamento, porém, do jeito que está, teremos um alto acoplamento. Repare que o NegociacaoController precisa saber que deverá passar uma conexão para realizar a tarefa, ou seja, o DAO sempre precisará de uma conexão e a classe que estará utilizando precisa repassar essa conexão. Uma outra classe deverá fazer o mesmo e assim sucessivamente aumentando em 2x o acoplamento. Ao meu ver o DAO deve buscar o dado independente de onde estiver persistindo. Vamos supor que eu precise mudar o DAO para buscar de um arquivo XML. Não precisarei de uma connection e isso afetaria todos os arquivos que estiver chamando esse DAO. Agora, imagine colocando a connection dentro do DAO e de repente mude o local de armazenamento. Simplesmente, mataria a connection dentro do DAO e todas as outras classes que estivessem chamando esse DAO, não seriam afetadas. Garantiríamos um baixo acoplamento visto que nenhuma outra faria essa associação. Espero ter ajudado na discussão. Obrigado!
Concordo com a opinião do @Rodrigo Aquiles. Acho que uma outra solução para reduzir este acoplamento seria abstrair ainda mais a função de conexão dentro das funções da DAO e criar uma terceira classe para fazer a interface entre a ConnectionFactory do banco específico e a DAO.
Basta criar um DAOFactory.