Course of DDD in Java

Rafa GómezJavier Ferrer

By Rafa Gómez y Javier Ferrer Software Design and Architecture

Step by step create your Java application following Domain-Driven Design. Folder structure, integration with DB, queue system, CQRS and more.

💸 First lesson available without registration!

Complete course to create applications in Java following the tactical and strategic patterns of DDD

What we will see in this Domain-Driven Design course in Java

  • [Free] 📖 Project creation: Bounded Context and Submodules - Folder structure
    • 🎥 Welcome to the course: Objectives, what will you learn?
    • 🎥 Folder structure: DDD in Java
    • 🎥 Multi-project monorepo with Gradle
  • 📖 Health check of the application: Our first endpoint
    • 🎥 Create health check endpoint
    • 🎥 Add acceptance tests with Spring Boot Runner
  • 📖 Outside-in Development: Implementation of the use case to create a course
    • 🎥 Implementation of the acceptance test and controller
    • 🎥 Implementation of the unit test and use case
    • 🎥 Implementation of in-memory repository and integration test
  • 📖 Modeling the domain: Course Aggregate
    • 🎥 Using Request and Response objects to communicate with the Application Service
    • 🎥 Refactoring to UUIDs as identifiers
    • 🎥 Value Objects: Immutability and tips to speed up development
  • 📖 Modeling the domain: Implications in tests
    • 🎥 ObjectMother pattern for our tests
    • 🎥 More semantic tests
  • 📖 Saving to database with Hibernate
    • 🎥 Hibernate integration
    • 🎥 Mapping models in Hibernate
    • 🎥 Implementation of repository for MySQL and integration test
    • 🎥 Discriminator Map with Hibernate
  • 📖 Domain events in memory with Spring Events: Increase total courses
    • 🎥 Spring Events integration
    • 🎥 Publishing and subscribing to domain events and acceptance test
    • 🎥 Idempotency when consuming events: Implementation of the use case and unit test
  • 📖 Partially Testing: Aggregates with domain events
    • 🎥 Testing save to the repository with domain events in the aggregate
    • 🎥 Alternative: publish events from aggregates
  • 📖 Asynchronous domain events - MySQL
    • 🎥 Saving domain events in MySQL
    • 🎥 Consumer / worker of domain events
    • 🎥 Polling the database to retrieve events
  • 📖 Publish asynchronous and scalable domain events using RabbitMQ
    • 🎥 Publishing events to RabbitMQ from Java
    • 🎥 Adding a fallback to domain event publishing
  • 📖 Consume events with RabbitMQ
    • 🎥 Consuming events in RabbitMQ from Java
    • 🎥 Retry management and Dead Letter
    • 🎥 Generating RabbitMQ configuration when deploying
  • 📖 CQRS
    • 🎥 Integrating Command and Query Bus
    • 🎥 Refactoring by adding CQRS to Hexagonal Architecture
  • 📖 Bounded Contexts and modules
    • 🎥 Create Notifications module
    • 🎥 Promote Notifications Module to Retention Bounded Context
  • 📖 Web frontend
    • 🎥 Integration with templating system
    • 🎥 Show course counter via query from Controller
    • 🎥 Create course: Where to place command validations
  • 📖 Backoffice
    • 🎥 Course list: Maintain course projection
    • 🎥 Filtering elements: Criteria/Specification pattern
  • 📖 Optimizing performance in Read Model - Moving to NoSQL: Elasticsearch to the rescue
    • 🎥 First data import to Elasticsearch
    • 🎥 Keep Elasticsearch projection in sync
    • 🎥 Criteria/Specification pattern with Elasticsearch
  • 📖 Optimizing performance - Beyond Elasticsearch: MySQL optimizations, web caching, and more
  • 📖Authorization
  • 📖Frequently asked questions
  • 📖 Conclusion and next steps

Related courses

This course complements the courses of:

We recommend that if this is the first time you hear about these concepts, do the courses on the list first and come back to this one once you have completed them. This way you will have clearer concepts and benefit much more from this course, as we are going to get into it 😬🚀

For just 29€ you have access to all courses!

Introduction video

Here is the video where we start the project that we will iterate throughout the course. We explain the folder structure and the GitHub template we made to save you boilerplate 😊

This way you can also get an idea of the quality of the content 😬

Videos of the course

Related courses

See full catalogue

Pay according to your needs

lite (only monthly)

19 €
per month
  • Access to a subset of courses to lay the foundation for maintainable, scalable, and testable code
  • Company invoice
Popular

standard

24,92 €
Save 121
Annual payment of 299
per month
  • Full course catalog
  • Design and architecture challenges
  • Highlighted solutions videos for challenges
  • Receive job offers verified by Codely
  • Company invoice

premium

41,58 €
Save 89
Annual payment of 499
per month
  • Everything above
  • More benefits coming soon

We won’t increase the price while your subscription is active