Reladomo → Amazon DynamoDB · MIT · Java 11+

Reladynamo

A generic Reladomo persistence adapter for DynamoDB. Point an existing Reladomo object model at DynamoDB without changing the XML, the generated classes, or a single finder call site — and keep Reladomo's bitemporal semantics exactly.

The idea

Reladomo's bitemporal logic lives in its TemporalDirector, above the persistence layer. By the time a write reaches storage, the director has already decided which rows should exist and hands down plain inserts, updates and deletes that carry their own businessDate and processingDate boundaries.

So Reladynamo does not reimplement bitemporality — it replaces only the persister and inherits everything above it. That makes "the same bitemporal behaviour" something to test rather than assert: one conformance suite runs against H2 (stock Reladomo JDBC, the reference) and against DynamoDB, and the results must be identical.

Finder / your code
      ↓
MithraObjectPortal
      ↓
TemporalDirector             ← bitemporal semantics live here, unchanged
      ↓
MithraDatedObjectPersister   ← Reladynamo replaces only this
      ↓
DynamoDB

Status

From the closed-loop gate (scripts/check.sh) as of 2026-09-16:

8 / 8
gates passing
689
adapter tests
78 + 176
H2-vs-DynamoDB differential tests (storage + query path)
10 / 13
inspection acceptance cases passing — the other three are declared out of scope

Not production ready. Nothing has run against a real AWS endpoint yet (tests use DynamoDB Local in-process), and the adapter has not been load tested. Online migration, reverse migration and Sybase ASE extraction are out of scope for 0.1.0. Read the support contract before planning a migration.

Explainers

Documentation

Scope and readiness

Design

Verification

Quickstart

git clone https://github.com/drompincen/reladynamo.git
cd reladynamo
java scripts/GenerateScripts.java   # scripts ship as markdown; this generates them
mvn clean install                   # all modules; DynamoDB Local runs in-process, no Docker
bash scripts/check.sh               # the full gate, including the H2-vs-DynamoDB differential suite

The repository contains no executable scripts — see start-here.md.

Then run a demo. Each is a standalone Maven project that runs against both H2 and DynamoDB:

DemoJDKEntitiesShape
01-crm-bitemporal11~46Bitemporal + audit-only + plain
02-petstore-unitemporal21~22One AsOfAttribute
03-car-classifier115Bitemporal rules — start here