Injetar ou estender um DAO

3 respostas
javahibernate
E

Tenho a seguinte dúvida sobre as formas de desenvolvimento abaixo.

Qual é a mais coerente em se fazer.

No exemplo o desenvolvedor precisa somente de buscar todas as pessoas no banco.

Exemplo 1 com Injeção

public class PessoaBean {
    @Inject PessoaBO pessoaBO;
    @Inject PessoaDAO pessoaDAO;

    List<Pessoa> lista = pessoaBO.listarPessoas();

    // ou

    List<Pessoa> lista = pessoaDAO.findALL();    
}

public class PessoaBO {
    @Inject PessoaDAO pessoaDAO;

    // Método usado  para chamar o DAO
    public List<Pessoa> listarPessoas() {
        return pessoaDAO.findALL();
    }
    // métodos de negócio
}

public class PessoaDAO {
    public List<Pessoa> findALL() {
        return super.findALL();
    }
}

Exemplo 2 - Usando extends

public class PessoaBean {
    @Inject PessoaBO pessoaBO;    

    List<Pessoa> lista = pessoaBO.findALL();
}

public class PessoaBO extends PessoaDAO {
    // métodos de negócio
}

public class PessoaDAO {
    public List<Pessoa> findALL() {
        return super.findALL();
    }
}

3 Respostas

peczenyj

Vamos la

  1. não use herança de qq jeito. herança vc cria um relacionamento É UM e, muitas vezes, vc pode/deve usar composição ( TEM UM ). Não faz sentido criar uma especialização do seu DAO. DAO tem uma responsabilidade que é acessar o banco de dados. não abuse disso. se vc estivesse usando testes unitarios veria como é complexo o teste nesses casos.

  2. em 2007 o Phillip Calçado ja falava sobre contra a arquitetura BOLOVO

javaflex

O desenvolvedor vai precisar buscar qualquer coisa que precisar conforme novos requisitos do negócio. Não fique complicando a vida do desenvolvedor com obstáculos técnicos sem sentido prático.

E

Obrigado pela resposta peczenyj, ficou claro agora. A dúvida ficou pelo fato de ter um método no PessoaBO somente para chamar uma lista de Pessoas do PessoaDAO. Se usar o DAO na camada de view somente para consultas no banco, essa prática é viável ?

Criado 14 de novembro de 2016
Ultima resposta 14 de nov. de 2016
Respostas 3
Participantes 3