Create Domain Object Factories
If you need to support different persistence media such as the filesystem or database, there are alternatives to writing different BMP implementations for each persistence type. The problem with writing different BMP implementations is that you have to replicate code that deals with EJB semantics in each different implementation. Also, switching implementations involves either changing deployment descriptors for many components, or switching JAR files.
A good solution is to separate the details of persisting data from
entity bean implementations. This is especially useful when you have
to deal with persisting domain objects because a natural solution is
to create abstract factories for domain objects. With or without
domain objects, it’s easy to see that this
additional implementation layer would have to allow entity beans to
load, save, and find data. To illustrate this implementation model,
consider a User domain object that is handled by
an entity bean. In Example 2-11, the entity bean will
expose fine-grained
get/set
methods, but will use a
UserFactory to persist
the
User domain object.
public class UserBean implements EntityBean { private EntityContext ctx; private transient UserFactory userFactory; private UserDomainObject user; public void setEntityContext (EntityContext ctx) { this.ctx = ctx; // Get the factory object for: userFactory = UserFactory.getInstance( ); } public void unsetEntityContext( ...