In this chapter, we looked at the implementation of various design patterns and their appropriate usage in the context of the GreaterCause application. Design patterns implemented in this chapter make the application modular, scalable, and extensible. The implementation of design patterns discussed in this book provide reusable solutions for interaction between components in various application tiers; the patterns provide a consistent design vocabulary, making it easier to develop software that is implemented based on best practices; this increases understandability and maintainability of the design artifacts and the corresponding code.
This chapter also covered the transactional semantics and attributes associated with EJBs, and the responsibilities of the bean developer to ensure transactional integrity. The emphasis on use cases is even more evident in this chapter; we developed our solutions based on the use cases identified in Chapters 1 and 2; this was done in a manner similar to Chapter 5, where presentation-tier objects were developed based on a use case–driven approach.
The knowledge gained from this chapter can be complemented by referring to the EJB specification for getting a thorough understanding of bean lifecycle management, container-managed relationships, EJB QL, transaction support, message-driven beans, and declarative and programmatic security. We also recommend reading Mastering Enterprise JavaBeans (2nd Edition) by Ed Roman et al., and EJB Design Patterns: Advanced Patterns, Processes, and Idioms by Floyd Marinescu.