É má prática se um service possui como atributo outro service?
Por exemplo, eu tenho uma classe que tem o seguinte código:
public void save(TaxonomiaModel taxonomiaModel,List<ConceitoModel> conceitos) {
Long id = (Long) taxonomiaDAO.save(taxonomiaModel);
taxonomiaModel = taxonomiaDAO.load(id); //fiz o load porque o hibernate dava uma exceção de objeto transient....
for(ConceitoModel conceitoModel: conceitos){
conceitoModel.setTaxonomiaModel(taxonomiaModel);
conceitoService.save(conceitoModel);
}
}
Onde uma taxonomia tem vários conceitos e um conceito tem uma taxonomia, só que não posso salvar tudo junto, taxonomia.setConceitos(), porque nesse momento os conceitos ainda não conhecem o id de sua taxonomia…
Então preciso possuir no service de taxonomia o service de conceito.
Uso o service ou o DAO de conceito?
E como seria o melhor controle de transação para esse tipo de operação?
No meu caso, declarei <tx:annotation-driven transaction-manager="transactionManager" />
e coloquei na classe de implementação
Isso é uma boa prática tambpem?