Catatumbo is an Open Source Object Mapping and Persistence framework for
Google Cloud Datastore.
allows to effortlessly save model objects to the Cloud Datastore as well as retrieve and map
the data from the
Cloud Datastore to model objects. Catatumbo is similar to JPA (Java Persistence API), but is
to work with Google Cloud Datastore instead of Relational Databases.
Catatumbo framework is built on top of
Google Cloud Java Client for Datastore API
(formerly known as gcloud-java-datastore API).
The framework provides a handful of annotations to make your model classes manageable by the
Automatic mapping of model classes to Cloud Datastore Entities and vice versa. Model classes may follow the
below design patterns:
Classic Java Beans Pattern (a.k.a. POJO) - with a default constructor, accessor
(getter) methods and
mutator (setter) methods.
Builder Pattern - for immutable persistence objects and/or to ensure a persistence
object state is
Automatic generation of Identifiers (for both Numeric and String types)
Support for strongly typed Identifiers (e.g. custom class UserId that wraps a numeric or string Id)
Ignore specific fields of your model object from persistence operations
Support for a variety of Data Types -
Geo Location (a.k.a Geo Point)
Keys, Parent Keys and Key References
Map of Maps
Ability to annotate which fields are indexed/not indexed
Ability to skip persistence of fields if their value is null
Support for secondary indexes to index a property for case-insensitive
Support for embedded objects (e.g. Address object inside Customer model). Embedded
objects can be stored in exploded (each field of embedded object is a separate property)
form or imploded (the embedded object is stored in a single field)form.
Support for persisting inherited fields
Support for entity listeners which allow your application to react to certain
Support for Optimistic Locking using automatic entity versioning scheme
Automatic timestamping of entities using @CreatedTimestamp and @UpdatedTimestamp
Support for multi-tenancy - allows working with multiple Namespaces in the Cloud Datastore.
Ability to override default mappers for a given data type
Ability to define a custom mapper on a per-field basis
Create, Retrieve, Update, Delete, Upsert (update or insert)
Execute GQL Queries
Support for Batch Writes
Metadata API for retrieving the Datastore metadata
Programmatic access to Datastore Statistics
Ability to work with Local Datastore (a.k.a. Datastore Emulator)