Enterprise Design Patterns

Introduction

Architecture
Enterprise Applications
Kinds of Enterprise Application
Thinking About Performance
Patterns

Part 1. The Narratives

1. Layering

The Evolution of Layers in Enterprise Applications
The Three Principal Layers
Choosing Where to Run Your Layers

2. Organizing Domain Logic

Making a Choice
Service Layer

3. Mapping to Relational Databases

Architectural Patterns
The Behavioral Problem
Reading in Data
Structural Mapping Patterns
Building the Mapping
Using Metadata
Database Connections
Some Miscellaneous Points

4. Web Presentation

View Patterns
Input Controller Patterns

5. Concurrency

Concurrency Problems
Execution Contexts
Isolation and Immutability
Optimistic and Pessimistic Concurrency Control
Transactions
Patterns for Offline Concurrency Control
Application Server Concurrency

6. Session State

The Value of Statelessness
Session State

7. Distribution Strategies

The Allure of Distributed Objects
Remote and Local Interfaces
Where You Have to Distribute
Working with the Distribution Boundary
Interfaces for Distribution

8. Putting It All Together

Starting with the Domain Layer
Down to the Data Source Layer
Some Technology-Specific Advice
Other Layering Schemes

Part 2. The Patterns

9. Domain Logic Patterns

Transaction Script
Domain Model
Table Module
Service Layer

10. Data Source Architectural Patterns

Table Data Gateway
Row Data Gateway
Active Record
Data Mapper

11. Object-Relational Behavioral Patterns

Unit of Work
Identity Map
Lazy Load

12. Object-Relational Structural Patterns

Identity Field
Foreign Key Mapping
Association Table Mapping
Dependent Mapping
Embedded Value
Serialized LOB
Single Table Inheritance
Class Table Inheritance
Concrete Table Inheritance
Inheritance Mappers

13. Object-Relational Metadata Mapping Patterns

Metadata Mapping
Query Object
Repository

14. Web Presentation Patterns
Model View Controller
Page Controller
Front Controller
Template View
Transform View
Two Step View
Application Controller

15. Distribution Patterns

Remote Facade
Data Transfer Object

16. Offline Concurrency Patterns

Optimistic Offline Lock
Pessimistic Offline Lock
Coarse-Grained Lock
Implicit Lock

17. Session State Patterns

Client Session State
Server Session State
Database Session State

18. Base Patterns

Gateway
Mapper
Layer Supertype
Separated Interface
Registry
Value Object
Money
Special Case
Plugin
Service Stub
Record Set