Olá pessoal, supondo que em uma classe de negocio, eu precise ter acesso a um repositorio, como eu deveria fazer isso;
Opcao 1: Declarar a classe como atributo da instancia da classe e recebe-la no construtor
ex:
public class Produto {
private ProdutoRepository produtoRepository;
public Produto(ProdutoRepository produtoRepository){
}
}
Opcao2 : Instancia o Repositorio dentro do proprio metodo
public class Produto {
public metodo(){
ProdutoRepository produtoRepository=new RepositoryFactory().getProdutoRepository();
}
}
Opcao3 : Passo o repositorio para o método como parametro
public class Produto {
public metodo( ProdutoRepository produtoRepository){
...
}
}
Desvantagens
Abordagem 1:
Como o Hibernate obriga um contrutor default, pode deixa o objeto
em um estado ilegal onde eu chamei um metodo mas seu Repositorio é nulo.
Abordagem 2:
Dificulta os testes, vistos que nao tem como Mockar, já que a depencia
esta “escondida” dentro do metodo
Abordagem 3:
A assinatura do método fica bem estranha;
Enfim, o que voces tem usado atualmente, além dessas tres que eu citei
alguém conhece uma outra forma melhor?
Obrigado
