Patterns of Enterprise Application Architecture (PEAA)
Details
- Full Name
-
Patterns of Enterprise Application Architecture according to Martin Fowler
- Also known as
-
Fowler patterns, PEAA patterns, Enterprise patterns
Core Concepts:
- Domain Logic Patterns
-
Transaction Script, Domain Model, Table Module, Service Layer
- Data Source Architectural Patterns
-
Table Data Gateway, Row Data Gateway, Active Record, Data Mapper
- Object-Relational Behavioral Patterns
-
Unit of Work, Identity Map, Lazy Load
- 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
- Object-Relational Metadata Mapping Patterns
-
Metadata Mapping, Query Object, Repository
- Web Presentation Patterns
-
Model View Controller, Page Controller, Front Controller, Template View, Transform View, Two Step View, Application Controller
- Distribution Patterns
-
Remote Facade, Data Transfer Object
- Offline Concurrency Patterns
-
Optimistic Offline Lock, Pessimistic Offline Lock, Coarse-Grained Lock, Implicit Lock
- Session State Patterns
-
Client Session State, Server Session State, Database Session State
- Base Patterns
-
Gateway, Mapper, Layer Supertype, Separated Interface, Registry, Value Object, Money, Special Case, Plugin, Service Stub, Record Set
- Key Proponent
-
Martin Fowler ("Patterns of Enterprise Application Architecture", 2002)
When to Use:
-
Designing complex enterprise applications with data persistence
-
Building layered architectures with clear separation of concerns
-
Working with object-relational mapping and database interactions
-
Designing web applications with proper presentation layer patterns
-
Managing distributed system communication
-
Handling concurrency in multi-user enterprise systems
-
Creating maintainable and testable enterprise code
Related Anchors:
-
Domain-Driven Design - Complements PEAA with domain modeling approach
-
Hexagonal Architecture - Architectural style emphasizing ports and adapters
-
Clean Architecture - Layered architecture pattern with dependency rules
Current Status:
-
The prior reproduces the 2002 catalog (Active Record, Data Mapper, Unit of Work, Repository …) as hand-rolled patterns; Fowler himself notes "many patterns are now implemented by common frameworks" while maintaining they are "still relevant today" (P of EAA book page)
-
The online catalog is content-unchanged since its "original 2003 publication", and the planned follow-up volumes (eaaDev) have been "pretty much frozen" since 2006 — the catalog reflects the J2EE/.NET era, not current distributed and frontend-heavy practice