Entity and value pack
Show identity-bearing and immutable concepts in one domain flow.
This page organizes a DDD tactical example pack around one business domain so that entities, value objects, aggregates, repositories, domain services, and events can be studied together as one coherent model instead of as disconnected terms.
DDD becomes much clearer when you can see the same order-management model expressed through aggregate boundaries, immutable values, domain events, and application-service coordination. A tactical example pack helps teams see those pieces working together instead of memorizing definitions separately.
The best tactical example pack usually starts with one aggregate root such as Order, then adds surrounding concepts like Money, Address, OrderLine, repository boundaries, and domain events such as OrderPlaced or OrderPaid. Each example should explain what business rule the model is protecting.
Show identity-bearing and immutable concepts in one domain flow.
Show invariants that must remain consistent together under one root.
Show how business-significant changes are published without weakening aggregate boundaries.
org.javaomnibus.examples.ddd
├── domain
│ ├── order
│ ├── payment
│ └── shared
├── application
└── infrastructure
package org.javaomnibus.examples.ddd.domain.shared;
public record Money(BigDecimal amount, Currency currency) {}
package org.javaomnibus.examples.ddd.domain.order;
public final class Order {
private final OrderId id;
private OrderStatus status;
public Order(OrderId id) {
this.id = id;
this.status = OrderStatus.DRAFT;
}
}