Overview
Catatumbo is an Open Source Object Mapping and Persistence framework for
Google Cloud Datastore. Catatumbo
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 specifically designed
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-datasource API).
The framework provides a handful of annotations to make your model classes manageable by the framework.
Features
- Automatic mapping of model classes (POJOs) to Cloud Datastore Entities and vice versa
- Automatic generation of Identifiers (for both Numeric and String types)
- Ignore specific fields of your model object from persistence operations
-
Support for a variety of Data Types -
- boolean, Boolean
- char, Character
- short, Short
- int, Integer
- long, Long
- float, Float
- double, Double
- BigDecimal
- String
- Byte Array
- Char Array
- Date
- Calendar
- Enum
- Geo Location (a.k.a Geo Point)
- Keys, Parent Keys and Key References
- java.util.List
- java.util.Set
- java.util.Map
- Ability to annotate which fields are indexed/not indexed
- Support for secondary indexes to index a property for case-insensitive querying/sorting.
- 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 persistence events.
- Support for Optimistic Locking using automatic entity versioning scheme
- 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
- Entity Queries
- Projection Queries
- Key-only Queries
- Support for Batch Writes
- Transaction Support
- Ability to work with Local Datastore (a.k.a. Datastore Emulator)