Permazen 5.0.0 API

This is the API documentation for the Permazen Java library.

Permazen makes powerful persistence simple for Java programmers.

Permazen's goal is to make Java persistence as simple as possible, doing so in a Java-centric manner, while remaining strictly type safe.

Permazen does this without sacrificing flexibility or scalability by relegating the database to the simplest role possible - storing data as key/value pairs - and providing all other supporting features, such as indexes, command line interface, etc., in a simpler, type-safe, Java-centric way.

Permazen also adds important new features that traditional databases don't provide.

  • Designed from the ground up to be Java-centric; completely type-safe.
  • Works on top of any database that can function as a key/value store (SQL, NoSQL, etc.)
  • Scales gracefully to large data sets; no "whole database" operation is ever required
  • Configured entirely via Java annotations (only one is required)
  • Queries are regular Java code - there is no "query language" needed
  • Change notifications from arbitrarily distant objects
  • Built-in support for rolling schema changes across multiple nodes with no downtime
  • Supports simple and composite indexes and user-defined custom types
  • Extensible command line interface (CLI) supporting arbitrary Java queries
  • Built-in Java-aware graphical user interface (GUI) based on Vaadin

Visit the Permazen project homepage at

Abstraction layer allowing access to a Database using normal Java objects.
Annotations used for automatic creation of a Permazen and corresponding schema configuration of the underlying Database from annotated classes, as well as automatic registration of various listeners, etc.
Ant tasks relating to Permazen.
Classes passed to @OnChange-annotated methods.
Components that support integrating Permazen into a Java Console Toolkit console.
Support for Permazen command line interface (CLI) applications.
Permazen CLI application commands.
Permazen CLI Command related classes, including pre-defined commands.
Classes for parsing command line flags in order to configure a Permazen command line interface (CLI) session.
Classes relating to integration betweeen the Permazen command line interface (CLI) and the Java Console Toolkit's jshell command.
Permazen parsing related classes.
Permazen parsing utility classes.
Core classes for the Permazen Java persistence layer.
Permazen core API utility classes.
Permazen Encodings.
Permazen index classes.
Classes associated with Jsck, the Permazen key/value database consistency checker.
CLI commands associated with Jsck, the Permazen key/value database consistency checker.
byte[] array key/value store API and related utility classes.
A simple KVStore implementation based on a sorted array of key/value pairs.
KVDatabase implementation based on Oracle's Berkeley DB Java Edition.
Caching KVStore and KVDatabase layers.
KVDatabase implementation based on CockroachDB.
KVDatabase implementation based on FoundationDB.
KVDatabase implementation based on LevelDB.
KVDatabase implementation based on LMDB.
KVDatabase implementation based on Microsoft SQL Server.
Utility classes for MVCC type operations using a KVStore.
AtomicKVStore and KVDatabase implementations based on H2 MVStore.
KVDatabase implementation based on MySQL.
A distributed KVDatabase based on the Raft consensus algorithm.
Raft-related CLI Commands.
A partition-tolerant KVDatabase that automatically migrates between a clustered RaftKVDatabase and a private non-clustered "standalone mode" KVDatabase, based on availability of the Raft cluster.
Raft inter-node messages.
A simple in-memory implementation of the KVDatabase interface.
KVDatabase implementation based on Google Cloud Spanner.
KVDatabase implementations based on SQL connections.
KVDatabase implementation based on SQLite.
Permazen key/value unit test support classes.
Utility classes relating to the KVDatabase interface.
KVDatabase implementation based on Xodus.
Classes for modeling Permazen Database schemas.
Spring Framework integration classes.
Permazen unit test support classes.
Generic typed classes holding ordered "tuples" of objects.
General utility classes used with Permazen.