service classes. The i BATIS DAO will also be used for transaction demarcation so
that we can aggregate fine-grained calls against the persistence layer.
We're sure it won't surprise you that we plan to use i BATIS SQLMap s in the persis-
tence layer. i BATIS SQLMap s will fulfill the responsibility of managing SQL , persis-
tence caches and executing calls against the database. We'll avoid going into too
much detail about this since this is a topic on the very subject.
14.3 T weaking Struts: the BeanAction
Recently, web application frameworks have experienced a bit of a transformation.
Features like state management, bean-based presentation classes, enhanced GUI
components, and sophisticated event models have been introduced to make
development easier. Even in the midst of these next-generation frameworks,
Struts continues to enjoy a strong presence. In assessing the best approach for the
JGameStore application, we wanted to use Struts while keeping a forward rele-
vance to the new-generation frameworks. With this in mind, we decided to use an
approach that we have dubbed the BeanAction . The BeanAction allows developers
of standard Struts applications to easily grasp how i BATIS fits into a standard
Struts application. At the same time, developers who use next-generation frame-
works like JSF , Wicket, and Tapestry will understand the semantics of the BeanAc-
tion approach. In the end, we are not trying to make Struts different; we are
simply making our application relevant to a wider audience.
The BeanAction successfully flattens the responsibilities of the Action and
ActionForm into one class. It also
abstracts you away from direct access
to the web-specific components like
session and request. This type of archi-
tecture is reminiscent of WebWork and
JSF . This flattening is accomplished
through a few key components: the
BeanAction that extends the Struts
Action class, the BaseBean , and the
ActionContext . These components are
important to understanding how the
BeanAction works, and are illustrated
in figure 14.1.
UML diagram of the BeanAction