Hi
I have a question regarding the "best practice" for using multiple stateless
session beans to manage my entities. All of my entities extend
GenericEntity, and need to have some database operations performed before
being persisted or merged. Below is a snippet from my GenericEntityFacade:
@Stateless
public class GenericEntityFacade implements GenericEntityFacadeLocal
{
@PersistenceContext
EntityManager em;
public void create( GenericEntity ge )
{
em.createQuery( .... generic stuff ....
em.persist( ge );
}
}
I have many other facades for managing various entities, e.g. SaleFacade for
Sales. My question is, what is the best way to get the other facades to
utilize the GenericEntityFacade?
* Option 1: embed GenericEntityFacade and EntityManager*
@Stateless
public class SaleFacade implements SaleFacadeLocal
{
@PersistenceContext
EntityManager em;
@EJB
private GenericEntityFacadeLocal genericEntityFacade;
public void createSale( Sale sale )
{
em.createQuery( .... sale stuff ....
genericEntityFacade.create( sale );
}
}
* Option 2: embed GenericEntityFacade and use its EntityManager*
@Stateless
public class SaleFacade implements SaleFacadeLocal
{
@EJB
private GenericEntityFacadeLocal genericEntityFacade;
public void createSale( Sale sale )
{
genericEntityFacade.getEntityManager().createQuery( .... sale stuff
....
genericEntityFacade.create( sale );
}
}
* Option 3: extend GenericEntityFacade** and use the inherited EntityManager
*
@Stateless
public class SaleFacade extends GenericEntityFacade implements
SaleFacadeLocal
{
public void createSale( Sale sale )
{
em.createQuery( .... sale stuff ....
genericEntityFacade.create( sale );
}
}
I'm currently using option 3. Any other recommendations or advice would be
welcome!
Thanks
Gary