Obviously using stateless EJB beans in an entity bean smells, but please consider a scenario as follows and tell me if you know of a better solution:
- I have an
InvoiceTemplateEntity Bean with fieldNextInvoiceDate - Generating
NextInvoiceDateis a complex procedure and should be performed outside of theInvoiceTemplateclass NextInvoiceDateshould be updated each timeInvoiceTemplateis stored to the db
For now I have logic regarding the generation of NextInvoiceDate in @PrePersist @PreUpdate methon in InvoiceTemplate entity bean. The logic is getting more and more complicated and I want to move it outside of the InvoiceTemplate entity bean. It looks to me that there should be a service to calculate NextInvoiceDate. But then is it right to invoke this service from the inside of InvoiceTemplate?
It isn’t such a smell – it is a lean towards domain-driven design.
I don’t know of any way to do this automatically, but you can:
Invoicetemplate, inject the helper bean that has the logic to calculate the next dateentity.setNextDateHelper(..)You can also check whether AspectJ doesn’t offer some EJB options so that you can inject the EJB whenever an entity of a given type (
InvoiceTemplate) is created. AspectJ works like that with spring beans, I don’t know whether there are such options for EJB.