Decide how to implement data access. The Enterprise
JavaBeans (EJB) programming model provides several distinct server-side component
types: entity, session, and message-driven beans, and servlets. Of these types,
entity beans are typically used to model business components in an application.
Entity beans have both state and behavior.
The state
of entity beans is persistent and is stored in a database. As changes are
made to an entity bean, its state is kept in synchronization with the database
record representing the bean. There are two types of entity beans provided
by the EJB model and these two types differ in the mechanism used to provide
persistence. These two types of entity beans are container-managed persistence (CMP)
beans and bean-managed persistence (BMP) beans.
- With BMP beans, the developer manually produces code to manage the persistent
state of the bean.
- With CMP beans, the EJB container manages the persistent state of the
bean. Persistent state management is a complex and difficult task; using CMP
beans allows the developer to concentrate on business logic by delegating
persistence behavior to the container.
Typical examples of CMP beans are Customer, Account,
and so on. Because CMP beans are objects, their data (state) is accessed
using field accessors. For example, a Customer entity bean is likely
to have fields such as name and phoneNumber. These pieces of
data are accessed using the accessor methods getName()/setName() and getPhoneNumber()/setPhoneNumber().
As a developer, you are not concerned with how this data is eventually
stored and retrieved from the backend database and can assume that the integrity
of the data is maintained by the container.
An alternative to developing entity beans is using
the Service Data Objects (SDO) framework, which is a unified framework for
data application development. With SDO, you do not need to be familiar with
a technology-specific API in order to access and utilize data. You need to
know only one API, the SDO API, which lets you work with data from multiple
sources, including relational databases, entity EJB components, XML pages,
Web services, the Java Connector Architecture, JavaServer Pages, and more.