Eai galera,
Eu tenho uma dúvida bem simples. Durante minha vida toda programando em java utilizando o JDBC e o design pattern DAO eu desenvolvi as classes DAO como classes "utilitárias", ou seja, não podem ser instanciadas e possui apenas métodos estáticos.
public class ClienteDAO{
private ClienteDAO(){}
public static void cadastrarCliente(Cliente c){
Connection con = ConnectionFactory.getConnection();
//Lógica de cadastro do cliente
con.closeConnection();
}
}
public class Main{
public static void main(String[] args){
ClienteDAO.cadastrarCliente(new Cliente("Teste"));
}
}
Sinceramente eu sempre achei essa solução muito agradavel, mas venho estudando através de apostilas e cursos aqui do Alura e em todos os lugares eu vejo exemplos em que o objeto DAO é instanciado no código e em alguns exemplos até é passado um Connection via contrutor.
public class Main{
public static void main(String[] args){
new ClienteDAO().cadastrarCliente(new Cliente("Teste"));
//ou dessa maneira...
ClienteDAO c = new ClienteDAO(ConnectionFactory.getConection());
c.cadastrarCliente(new Cliente("Teste"));
}
}
Todas soluções funcionam de fato, mas minha dúvida é se eu estou modelando as classes de forma correta ou não.
Obrigado!