
Domain-driven Design with Java: Building scalable and maintainable Java applications with DDD principles
Otavio Santana
This audiobook is narrated by a digital voice.
DESCRIPTION
Domain-driven Design (DDD) continues to shape how modern software systems are built by bridging the gap between technical teams and business needs. Its emphasis on modeling the domain with...
Location:
United States
Description:
This audiobook is narrated by a digital voice. DESCRIPTION Domain-driven Design (DDD) continues to shape how modern software systems are built by bridging the gap between technical teams and business needs. Its emphasis on modeling the domain with precision and clarity is especially relevant in today's fast-paced, complex software landscape. This book begins with DDD fundamentals, including core principles, a shared language, and the distinction between strategic and tactical approaches, progressing to strategic concepts like bounded contexts, context mapping, and domain events. It explores the tactical Java implementation detailing entities, value objects, services, aggregates, and repositories. The book also explores testing strategies and architectural validation using ArchUnit/jMolecules. Further, it explores DDD across microservices, monoliths, and distributed systems, integrating with Clean Architecture and SQL/NoSQL data modeling to prevent impedance mismatch. It thoroughly covers applying DDD within Jakarta EE, Spring, Eclipse MicroProfile, and Quarkus. WHAT YOU WILL LEARN ● Apply DDD from strategic to tactical design. ● Model aggregates, entities, and value objects in Java. ● Use DDD in monoliths, microservices, and distributed systems. ● Integrate DDD with Spring and Jakarta EE frameworks. ● Apply Clean Architecture principles alongside DDD. ● Structure data modeling for SQL and NoSQL systems. ● Apply bounded contexts, context mapping, and domain events for architecture. ● Unit/integration testing, validate design with ArchUnit/jMolecules. ● Build responsive microservices with Quarkus extensions, reactive programming Duration - 8h 49m. Author - Otavio Santana. Narrator - Digital Voice Madison G. Published Date - Friday, 31 January 2025. Copyright - © 2026 BPB ©.
Language:
English
Title Page
Duration:00:00:15
Copyright Page
Duration:00:01:21
Dedication Page
Duration:00:00:06
About the Author
Duration:00:00:34
About the Reviewer
Duration:00:01:13
Acknowledgement
Duration:00:00:42
Preface
Duration:00:12:44
Table of Contents
Duration:00:09:01
1. Understanding Domain-driven Design
Duration:00:00:04
Introduction
Duration:00:03:00
Structure
Duration:00:00:16
Objectives
Duration:00:00:48
Importance of domain-driven design
Duration:00:03:51
Connecting business goals with technical implementation
Duration:00:02:21
Core concepts and methodologies
Duration:00:02:54
Strategic aspect of DDD
Duration:00:00:52
Tactical aspect of DDD
Duration:00:02:06
Conclusion
Duration:00:01:02
Points to remember
Duration:00:01:28
Multiple choice questions
Duration:00:02:39
Answers
Duration:00:00:02
References
Duration:00:01:44
2. Strategic DDD Concepts
Duration:00:00:04
Domains and subdomains
Duration:00:03:23
Example scenario with EcoTrack Logistics
Duration:00:03:41
Understanding bounded contexts
Duration:00:03:51
Context mapping techniques
Duration:00:05:28
Aligning business strategy with software design
Duration:00:02:10
3. Tactical DDD Implementation
Duration:00:00:05
Technical requirements
Duration:00:00:26
Entities and value objects
Duration:00:03:00
Entities pitfalls
Duration:00:11:01
Builders and domain-specific language
Duration:00:05:27
Value object
Duration:00:07:44
Aggregates and aggregate roots
Duration:00:06:03
Services and their roles
Duration:00:06:04
Implementing repositories
Duration:00:03:38
4. Testing and Validating DDD Applications
Duration:00:00:05
Introduction to testing in DDD
Duration:00:01:22
Unit testing DDD components
Duration:00:01:58
Defining the domain components
Duration:00:04:22
Using tests to validate expected behavior
Duration:00:10:21
Enhancing your tests
Duration:00:08:24
Using ArchUnit for architectural validation
Duration:00:06:23
5. DDD in Microservices, Monoliths, and Distributed Systems
Duration:00:00:06
DDD in monolithic architecture
Duration:00:07:06
Creating the domain layer and organizing packages
Duration:00:09:48
Creating the application layer
Duration:00:02:55
Creating the controller layer
Duration:00:03:15
Creating the infrastructure layer
Duration:00:02:42
DDD in microservices architecture
Duration:00:10:09
Need for microservices
Duration:00:03:07
Applying DDD in distributed systems
Duration:00:08:02
Refactoring legacy code to align with DDD principles
Duration:00:06:20
6. Integrating DDD with Clean Architecture
Duration:00:00:05
Overview of Clean Architecture
Duration:00:04:02
Combining DDD with Clean Architecture
Duration:00:01:44
Creating well-defined boundaries with Clean Architecture and DDD
Duration:00:04:28
Creating a bridge between the core application and external systems
Duration:00:05:31
Structuring code for maintainability
Duration:00:05:37
Using and combining each approach
Duration:00:01:20
7. DDD and Data Modeling
Duration:00:00:04
Principles of DDD in data modeling
Duration:00:03:44
Modeling data in SQL databases
Duration:00:01:25
Jakarta Persistence in action
Duration:00:08:24
Modeling data in NoSQL databases
Duration:00:06:33
8. Enterprise Java with Jakarta EE
Duration:00:00:05
Applying DDD with Jakarta EE
Duration:00:04:39
Leveraging Jakarta Data for better encapsulation
Duration:00:05:33
Integrating DDD into enterprise Java applications
Duration:00:08:17
9. Enterprise Java with Spring
Duration:00:00:04
Overview of Spring Framework with DDD
Duration:00:05:53
Applying DDD with Spring Boot
Duration:00:00:29
Creating and setting up a new Spring Boot project
Duration:00:01:43
Defining the core domain entities
Duration:00:01:34
Shaping the repository and services
Duration:00:04:36
Exposing the service through REST endpoints
Duration:00:03:29
Polishing error handling
Duration:00:01:37
Ensuring code behavior with unit tests
Duration:00:07:03
10. Eclipse MicroProfile and Domain-driven Design
Duration:00:00:05
Understanding Eclipse MicroProfile and its purpose
Duration:00:00:45
Clarifying Jakarta EE and MicroProfile similarities
Duration:00:01:26
Eclipse MicroProfile architecture and specifications
Duration:00:03:36
Integrating Eclipse MicroProfile with DDD
Duration:00:04:03
Practical microservices example
Duration:00:18:38
11. Quarkus and Domain-driven Design
Duration:00:00:05
Quarkus, Jakarta EE, and MicroProfile integration
Duration:00:04:05
Quarkus in action
Duration:00:01:42
Creating and setting up a new project
Duration:00:00:56
Configuring the database integration
Duration:00:01:15
Panache entity and resource code generation
Duration:00:02:04
Validating the application's behavior
Duration:00:03:04
Using Active Record with Panache
Duration:00:06:18
Using the Repository pattern with Panache
Duration:00:08:23
Using Panache from a DDD perspective
Duration:00:02:13
12. Code Design and Best Practices for DDD
Duration:00:00:05
Anemic model vs. rich model
Duration:00:07:08
Fluent API vs. Builder pattern in DDD
Duration:00:06:30
Exception handling and logging in DDD
Duration:00:00:49
Defining the exceptions hierarchy
Duration:00:01:46
Creating trackable exception messages
Duration:00:01:10
Handling exceptions and logs securely
Duration:00:06:13
Long-term code quality and sustainability
Duration:00:07:13
13. Final Considerations
Duration:00:00:04
Introduction to domain storytelling
Duration:00:02:05
Purpose and benefits of domain storytelling
Duration:00:03:01
Differences between domain storytelling and agile brainstorming
Duration:00:01:36
Exploring domain storytelling
Duration:00:08:09
Further reading and continued exploration
Duration:00:01:42
Index
Duration:00:10:07