Qual é a necessidade da arquitetura DAO

Ao programar em Java, é sempre necessário codificar de acordo com a arquitetura DAO? Se sim, quais são as vantagens de usá-lo?

Estou fazendo um projeto que tem um diagrama de classes como abaixo. quais são as desvantagens disso?

Classe de entidade:

private void fillSONumber() {
    try {
        ZnAlSalesOrder o = new ZnAlSalesOrder();
        ArrayList a = o.getPendingSalesOrderIDs();
        for (int i = 0; i < a.size(); i++) {
            cmbSoNo.addItem(a.get(i));
        }
        o.close();
    } catch (Terminated ex) {

    }
}

Exemplo de classe EntityTable:

public ResultSet select(String fields, String selection) {
    db = new Database();
    db.select("SELECT " + fields + " FROM " + name + " WHERE " + selection);
    return rs = db.rs;
}

e a classe de banco de dados faz o estabelecimento e a destruição da conexão.

questionAnswers(4)

yourAnswerToTheQuestion