<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hands-on Examples on Advanced Beginner</title><link>https://advanced-beginner.github.io/en/docs/ddd/examples/</link><description>Recent content in Hands-on Examples on Advanced Beginner</description><generator>Hugo</generator><language>en-US</language><managingEditor>d8lzz1gpw@mozmail.com (kimbenji)</managingEditor><webMaster>d8lzz1gpw@mozmail.com (kimbenji)</webMaster><lastBuildDate>Mon, 23 Mar 2026 19:08:15 +0900</lastBuildDate><atom:link href="https://advanced-beginner.github.io/en/docs/ddd/examples/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Setup</title><link>https://advanced-beginner.github.io/en/docs/ddd/examples/setup/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/examples/setup/</guid><description>&lt;h1 id="project-setup"&gt;Project Setup&lt;a class="anchor" href="#project-setup"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;DDD layered architecture (Domain, Application, Infrastructure, Interfaces) package structure&lt;/li&gt;
&lt;li&gt;Spring Boot 3.2.x + Spring Kafka + JPA based dependencies&lt;/li&gt;
&lt;li&gt;AggregateRoot, DomainEvent, Entity base class implementations&lt;/li&gt;
&lt;li&gt;Docker Compose for Kafka + PostgreSQL development environment&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;h2 id="target-audience-and-prerequisites"&gt;Target Audience and Prerequisites&lt;a class="anchor" href="#target-audience-and-prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Item&lt;/th&gt;
 &lt;th&gt;Required Level&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Backend developers looking to apply DDD patterns with Spring Boot&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Java 17+ syntax, Record, Stream API&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Spring Boot&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Spring Boot basics, DI, @Service, @Repository&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Gradle&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Kotlin DSL basic syntax&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Experience running docker-compose up/down&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Setting up the structure and dependencies for the DDD example project.&lt;/p&gt;</description></item><item><title>Order Domain</title><link>https://advanced-beginner.github.io/en/docs/ddd/examples/order-domain/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/examples/order-domain/</guid><description>&lt;h1 id="order-domain-implementation"&gt;Order Domain Implementation&lt;a class="anchor" href="#order-domain-implementation"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Order&lt;/strong&gt;: Aggregate Root. Manages the order&amp;rsquo;s consistency boundary&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OrderLine&lt;/strong&gt;: Internal Entity. Can only be created/modified through Order&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Money, ShippingAddress, OrderId&lt;/strong&gt;: Value Objects. Immutable and compared by value&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invariants&lt;/strong&gt;: At least 1 order line, max amount 100M won, quantity 1~999&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domain Events&lt;/strong&gt;: OrderCreatedEvent, OrderConfirmedEvent, etc. published on state changes&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;h2 id="target-audience-and-prerequisites"&gt;Target Audience and Prerequisites&lt;a class="anchor" href="#target-audience-and-prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Item&lt;/th&gt;
 &lt;th&gt;Required Level&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Developers implementing DDD tactical patterns in code&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;DDD Basics&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Understanding of Aggregate, Entity, Value Object, Domain Event concepts&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Experience with Record, Optional, Stream API&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Prerequisite&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://advanced-beginner.github.io/en/docs/ddd/examples/setup/"&gt;Project Setup&lt;/a&gt; completed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Implementing the order domain with DDD patterns.&lt;/p&gt;</description></item><item><title>Application Layer</title><link>https://advanced-beginner.github.io/en/docs/ddd/examples/application-layer/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/examples/application-layer/</guid><description>&lt;h1 id="application-layer-implementation"&gt;Application Layer Implementation&lt;a class="anchor" href="#application-layer-implementation"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OrderService&lt;/strong&gt;: Use Case orchestration. Calls domain logic, manages transactions, publishes events&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command objects&lt;/strong&gt;: Encapsulate requests as immutable objects like CreateOrderCommand&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DTO&lt;/strong&gt;: Separate response representation from domain with OrderResponse, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JPA Repository&lt;/strong&gt;: Implementation of Domain Repository interface. Uses Mapper for Entity conversion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event handler&lt;/strong&gt;: Publishes to Kafka after commit using @TransactionalEventListener&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;h2 id="target-audience-and-prerequisites"&gt;Target Audience and Prerequisites&lt;a class="anchor" href="#target-audience-and-prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Item&lt;/th&gt;
 &lt;th&gt;Required Level&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Developers learning Application Service and Infrastructure layer implementation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Spring&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Experience with @Service, @Transactional, @Repository annotations&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;JPA&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Understanding of Entity, @Embedded, CascadeType&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://advanced-beginner.github.io/en/docs/ddd/examples/setup/"&gt;Project Setup&lt;/a&gt;, &lt;a href="https://advanced-beginner.github.io/en/docs/ddd/examples/order-domain/"&gt;Order Domain&lt;/a&gt; completed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Implementing Application Services that orchestrate use cases and the infrastructure layer.&lt;/p&gt;</description></item><item><title>Event Sourcing Practice</title><link>https://advanced-beginner.github.io/en/docs/ddd/examples/event-sourcing/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/examples/event-sourcing/</guid><description>&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Event Sourcing&lt;/strong&gt;: Store events instead of state. Restore state by replaying events&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event Store&lt;/strong&gt;: Persistent storage for events. Version-based optimistic concurrency control&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event-Sourced Aggregate&lt;/strong&gt;: Apply/when pattern for event application and state changes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Snapshot&lt;/strong&gt;: Periodically save state snapshots for performance optimization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Point-in-time Recovery&lt;/strong&gt;: Replay events up to a specific version to query past state&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;h2 id="target-audience-and-prerequisites"&gt;Target Audience and Prerequisites&lt;a class="anchor" href="#target-audience-and-prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Item&lt;/th&gt;
 &lt;th&gt;Required Level&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Developers looking to implement the Event Sourcing pattern&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;DDD&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Understanding of Aggregate and Domain Event concepts&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Switch Expression, Pattern Matching syntax&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://advanced-beginner.github.io/en/docs/ddd/examples/order-domain/"&gt;Order Domain&lt;/a&gt;, &lt;a href="https://advanced-beginner.github.io/en/docs/ddd/examples/application-layer/"&gt;Application Layer&lt;/a&gt; completed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Implement the Event Sourcing pattern for an order domain. Store events instead of state, and restore state by replaying events.&lt;/p&gt;</description></item></channel></rss>