Add Ekbatan to ORM - #1307
Merged
Merged
Conversation
Modern Java persistence framework for event-driven systems, with an ergonomic outbox that commits state and events in one transaction. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Ekbatan to the ORM section.
Ekbatan is a modern Java persistence framework for event-driven systems, built on top of jOOQ.
A service that publishes domain events usually writes twice, once to the database and once to
the broker, and the two disagree whenever the second write fails. The transactional outbox is
the established answer to that, normally added as a separate library or assembled by hand.
Ekbatan folds the outbox pattern into the persistence layer as a first class citizen, with
three pieces:
to the db within an Action (insert / update). Action does not immediately write your changes
into the db, first it accumulates them into a staging area (e.g. WalletMoneyDepositAction,
OrderRegisterAction).
accumulating changes, it also accumulates the events attributed to those changes (e.g.
WalletCreatedEvent, WalletMoneyDepositedEvent).
writes the changes to the tables and accompanying events to the events table, and commits.
State and events land together or neither does.
So the outbox pattern is not new here, it is already established and there are libraries for
it, but no other framework or library currently does it with the same user/developer experience
and ergonomics that Ekbatan provides, which makes it suitable for event-driven systems. Ekbatan
also provides reliable helper mechanisms for publishing the events to event brokers like Kafka
or Pulsar via Debezium plugins, or you can simply use the listen-to-yourself module if you just
want a minimal at-least-once local event handler, without any event broker.
Java 25 on virtual threads, PostgreSQL, MySQL and MariaDB, with Spring Boot, Quarkus, Micronaut
or plain Java.
Summary by cubic
Adds Ekbatan to the ORM list in README to surface a modern Java persistence framework for event-driven systems with an outbox that commits state and events in one transaction. This keeps the catalog current for teams needing transactional outbox support.
Written for commit 750b69c. Summary will update on new commits.