Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

EJB - Dúvidas em Relação ao uso da Camada Service

No mundo do Java existe muita discussão sobre a camada service, pois muitos dizem que a utilização desta camada separa dados de comportamento (famoso BO) e teríamos uma aplicação mais orientada à serviços que orientada a objetos pois estaríamos subutilizando os objetos por estar usando o modelo “Anêmico”. Eu particularmente gosto da camada service, assim como na vídeo aula eu uso ela para o controle transacional, ou quando preciso da interação entre várias entidades ou vários repositórios(no caso da aula o DAO mas que eu chamaria de repositório), na orquestração dos objetos e também para colocar comportamentos que não se encaixem em uma entidade apenas(ex: um calculo de folha de pagamento). Um possível em diria problema, mas que me causa um certo desconforto é uma classe service cheia de métodos que apenas delegam para o repositório/DAO, nesses casos eu não deveria deixar as lógicas de consulta apenas nos repositórios/DAOS e as lógicas com acesso a Daos e transações na service? Como os colegas encaram essa questão de modelo anêmico trabalhando com EJBS?

2 respostas
solução!

Oi Ricardo,

A questão de modelo anêmico ou modelo rico é independente do seu framework, ou seja, independente do uso de EJB ou não.

Os EJBs, igual ao Spring, existem para assumir tarefas de infra como o gerenciamento de transação, ciclo da video, injeção etc. A modelagem do seu domínio é uma outra questão (e não é culpa dos EJBs, rsrs).

Para estas classes de serviço que vc mencionou há vários nomes no mercado. Eu vou chamar elas aqui de Application Service, seguindo o livro de DDD. O Application Service é um coordenado de chamadas: usa Dao/Repo e chama os métodos das classes do domínio.

É importante que a lógica de negocio sempre estar no domínio (e não no Application Service). Por exemplo, aquele calculo de folha de pagamento seria um Domain Service que é diferente de um Application Service.

O Domain Service encapsula alguma logica de negocio que não se encaixa em uma entidade. O Application Service chamaria o Domain Service. Ok?

Resumindo, o Application Service não implementa a regra apenas chama, coordena, de certa forma isola o domínio, tudo bem?

Não sei se consegui sanar todas as suas duvidas.... Senão pergunte aqui de novo :)

abs

sanou sim, obrigado!