Hibernate.orgCommunity Documentation
Hibernate Object/Grid Mapper (OGM) is a persistence engine providing Java Persistence (JPA) support for NoSQL storage solutions. It reuses Hibernate Core's object life cycle management and (de)hydration engine but persists entities into a key/value store instead of a relational database. It reuses the Java Persistence Query Language (JP-QL) as an interface to querying stored data.
Hibernate OGM is developed specifically with Infinispan - an open source distributed in-memory key/value store - in mind, but the longer term goal is to abstract Hibernate OGM to work with any NoSQL store, not just key/value stores, similar to the way Hibernate Core works with any SQL-based relational database, regardless of specific SQL dialect.
If you wish to help with this abstraction effort or with Hibernate OGM in general, please refer to Chapter 1, How to get help and contribute on Hibernate OGM.
Hibernate OGM is released under the LGPL open source license.
This documentation and this project are work in progress. Please give us feedback on
what you like
what you don't like
what is confusing
Check Section 1.2, “How to contribute” on how to contact us.
Hibernate OGM tries to achieve a few goals:
offer a familiar environment for NoSQL stores
encourage new data usage patterns and NoSQL exploration in more "traditional" enterprises
help scale existing applications with a NoSQL front end to a more traditional database
NoSQL can be very disconcerting as it is composed of many disparate solutions with different benefits and drawbacks. Speaking only of the main ones, NoSQL is at least categorized in four families:
graph oriented databases
key / value stores: essentially Maps but with different behaviors and ideas behind various products (data grids, persistent with strong or eventual consistency etc)
document based datastores: contains as value semi structured documents (think JSON)
column based datastores

Various NoSQL families
Each have different benefits and drawbacks and one solution might fit a use case better than an other. However access patterns and APIs are different from one product to the others.
Hibernate OGM is not expected to the the Rosetta stone used to interact with all NoSQL solution in all use cases. But for people modeling their data as a domain model, it provides distinctive advantages over raw APIs and has the benefit of providing an API and semantic quite known to Java developers. Reusing the same programmatic model and trying different (No)SQL engines will hopefully help people to explore alternative datastores.
Hibernate OGM also aims at helping people scale traditional relational databases by providing a NoSQL front-end and keeping the same JPA APIs and domain model.
Today, Hibernate OGM does not support all these goals. Here is a list of what we have:
store data in Infinispan's datagrid
CRUD for entities
polymorphic entities
embeddable objects (aka components)
basic types support (numbers, String, URL, Date, enums etc)
support for associations
support for collections (Set, List, Map, etc)
support for Hibernate Search's full-text queries
JPA and native Hibernate Core API support
Here are a few areas where Hibernate OGM can be beneficial:
need to scale your data store up and down rapidly (via Infinispan's capability)
keep your domain model generic of the underlying datastore technology (RDBMS, Infinispan, NoSQL)
explore the best tool for the use case while keeping your development familiar
use a familiar JPA front end to Infinispan's datagrid
use Hibernate Search full-text search / text analysis capabilities and store the data set in an elastic grid
These are a few ideas and the list will grow when we will add more capabilities to Hibernate OGM.