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

Dúvida no Ex. 3 da Aula 1 - Introdução aos Enterprise Java Beans

Sempre li em livros de POO, foruns e artigos que recomenda-se não separar os dados das operações de uma classe. Entendo como operações as regras de negócio daquela classe. Ex.: Classe=NotaFiscal, Dados:AliquotaICMS, Operação(regra de negócio):CalcularICMS. Quando digo que as regras de negócio da minha aplicação estarão em um EJB, eu não estou separando os dados das regras, uma vez que os dados estaria numa outra classe (uma classe anotada como entidade JPA, por exemplo)?

3 respostas

Acredito que entendi o que os autores quiseram dizer com "as regras de negócio da aplicação estão no EJB" . Lendo novamente e assistindo os vídeos fica claro que na verdade a coordenação das chamadas as regras de negócio ficam no EJB. Seria isso?

Obrigado.

Marco, tudo bem? Eu entendo que as regras de negócio vão mais além de um método da classe, como o exemplo que você deu, em calcular ICMS.

Uma regra de negócio por exemplo, seria "o pedido não pode ser cancelado se a NF já tiver sido emitida", ou "um equipamento não pode estar localizado em mais de uma sala ao mesmo tempo". Por tanto nesse caso o recomendado seria realizar essa verificação no ejb e se alguma regra é violada, você gera uma exceção pra impedir que a operação continue, por tanto a regra de negócio vai estar no próprio EJB e não na sua classe NotaFiscal ou Pedido em sí.

Espero ter colaborado.

solução!

Oi Marco,

seria isso mesmo, a gente quis dizer que as regras estão implementadas no seu domínio (nas entidades) e os EJB são "apenas" os coordenadores que delegam as chamadas para as entidades. Essa é a ideia de ter um Domain Model (modelo rico) seguindo o Domain Driven Design do Eric Evans.

http://martinfowler.com/eaaCatalog/domainModel.html

Na vida real vc vai encontrar muito código que usa os EJB como Business Objects, ou seja os EJBs possuem as regras. Essa a ideia do Anemic Domain Model:

http://www.martinfowler.com/bliki/AnemicDomainModel.html

Ambos as formas tem as suas vantagens e desvantagens. DM é mais OO e a única forma de sobreviver projetos complexos. ADM é muito mais simples, o dev não precisa conhecer o domínio para começar, no entanto gera problema de manutenção ao longo tempo.

É um tópico que vai muito além do EJB!

Espero ter ajudado!

abs