Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Design Pattern DAO

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!

1 resposta
solução!

Bom dia Felipe, a vantagem de criar os os objetos DAO é que utilizando frameworks de inversão de controle você pode injetar os objetos