An entity bean represents data that is stored in a database or some other persistent storage. Entity beans are persistent across client sessions and the lifetime of the server. No matter when or where you get a reference to an entity bean with a given identity, the bean should reflect the current state of the persistent data it represents. Multiple clients can access entity beans with the same identity at the same time. The EJB container manages these concurrent transactions for the underlying entity, ensuring that client transactions are properly isolated from each other, consistent, and persistent.
Returning to our running example of a profile service, we
started with a session EJB,
ProfileManager, that simply created profiles
(represented as Java beans) for the client. Then we changed the design
into a single
implemented as a stateful session bean. The major drawback in our
Profile is that
its profile data isn’t persistent. A profile is created by a client
and updated through client method calls, but once the
Profile reference is given up by the client, or if the server crashes or shuts down for some reason, the accumulated profile data is lost. What we really want is a bean whose state is stored in a relational database or some other persistent storage that can be reloaded at a later time when the user reenters a profiled application. An entity EJB provides this functionality, and we can make our profiles persistent by implementing ...