Oi gente =)
Eu tava aqui codificando minha primeira aplicação padronizada em Java, em 3 camadas, no modelo mvc, quando percebi uma coisa: Minhas classesDAO possuem uma coisa em comum entre todas elas. Todas tem um attributo connection e realizam a conexão com o banco de dados no constructor através da minha fábrica de conexões.
Segue um código exemplo de uma de minhas classesDAO
public class CargoDAO {
Connection connection = null;
public CargoDAO() throws SQLException {
this.connection = ConnectionFactory.getConnection();
}
public Cargo pesquisaId(int id) throws SQLException{
...
return cargo;
}
}
Baseado na observação, pensei que seria conveniente para eu não ter que ficar redigitando o atributo connection e redigitando o código do constructor em todas as classes, se haveria a possibilidade de eu criar uma classe que e fizesse as classes dao herdarem dela o atributo e o constructor, de modo que eu apenas precise codificar ao métodos, mas ainda assim tenha acesso a conexão e continue dentro do conceito da orientação a objetos, ou seja, sem que todas as classes possam sair mexendo nos atributos da ObjectDAO para não ter problemas de erros de lógica ou coisa parecida....
Será que alguém poderia me ajudar a implementar uma situação dessas?
Criei a classeabstract public class ObjetoDAO {
private Connection connection;
public ObjetoDAO() throws SQLException {
this.connection = ConnectionFactory.getConnection();
}
public Connection getConnection() {
return connection;
}
public void setConnection(Connection connection) {
this.connection = connection;
}
}
mas comecei a ficar confuso na hora de obter a conexão... porque não posso instanciar o ObetoDAO por ele ser abstrato... Por outro lado se eu não instanciar não posso usar o getConnection. Ainda nessa linha, se eu transformar o atributo e o getter e o setter em statico, acho que não vou ter uma conecction para cada classeDAO que precisar acessar, podendo gerar erros de lógica. O construcutor também não pode ser statico, o que também não adiantaria muita coisa... Não sei se deu pra entender minha intenção... Tentar inicializar a connection já com valor de
'ConnectionFactory.getConnection();
' tbm não deu certo,,, não consigo receber a connection na classeDAO filha da ObjetoDAO...
Será que alguém pode me ajudar? =x
Abs
Well