Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Hibernate Object/Grid Mapper
Java Other
Failed to load latest commit information.
bom OGM-886 Ship own netty jars to omit connection-refused-bug
cassandra OGM-770 Adapting to latest ORM changes
core OGM-555 Adding option for enforcing list-style mapping for map associ…
couchdb OGM-770 Reverting temporary changes due to ORM bugs fixed by now
distribution OGM-885 Add Redis to distribution ZIP
documentation OGM-555 Wording improvement as per Davide's comment
ehcache OGM-770 Adapting OgmConfiguration; Adding test for bootstrapping via …
infinispan OGM-770 Adapting OgmConfiguration; Adding test for bootstrapping via …
integrationtest OGM-770 Putting temporary fix in place for using ORM 5 CR3 modules in…
modules OGM-886 Ship own netty jars to omit connection-refused-bug
mongodb OGM-555 Adapting to ORM 5 changes
neo4j OGM-555 Adding test for map with value type using a composite key
performance Improve Maven module description for IDEs that make use of it
redis OGM-885 Fixing JavaDoc errors in Redis module
src/main OGM-869 Remove build of modules for EAP6
.gitattributes OGM-220 Fix remaining wrong line endings
.gitignore OGM-841 Add gitingore info for asciidoc
changelog.txt [Jenkins release job] changelog.txt updated by release build 4.2.0.Final OGM-869 Remove build of modules for EAP6
license.txt OGM-57 rename licence.txt to license.txt
pom.xml OGM-770 Requiring JDK 8 for the build as this is needed for WildFly 10; OGM-869 Remove build of modules for EAP6
settings-example.xml OGM-569 Add early access repository

Hibernate OGM

Version: 4.2.0.Final - 01 Jun 2015


Hibernate OGM is an attempt to store data in a NoSQL data grid using the Hibernate ORM engine rather than rewriting a JPA engine from scratch.

The benefits are fairly obvious:

  • reimplementing the complex JPA specification is a lot of work
  • a new implementation would mature at a rather slow rate and risk of bugs would be high
  • Hibernate is familiar to many people

Checkout for more information.

Build instructions

The code is available on GitHub at

To run the full project build including tests for all backends, documentation etc. execute:

mvn clean install -s settings-example.xml

Note that for running the test suite against separately installed MongoDB and CouchDB servers their host name must be specified via an environment variable. See the sections below for the details.

To speed things up, there are several options for skipping parts of the build. To run the minimum project build without integration tests, documentation and distribution execute:

mvn clean install -DskipITs -DskipDocs -DskipDistro -s settings-example.xml

The following sections describe these options in more detail.

Integration tests

You can skip integration tests by specifying the skipITs property:

mvn clean install -DskipITs -s settings-example.xml


The documentation is built by default as part of the project build. You can skip it by specifying the skipDocs property:

mvn clean install -DskipDocs -s settings-example.xml

If you just want to build the documentation, run it from the documentation/manual subdirectory.

For rapid documentation testing, you can limit the generated format to html to speed up the process

mvn clean install -f documentation/manual/pom.xml -s settings-example.xml -Djdocbook.format=html_single


The distribution bundle is built by default as part of the project build. You can skip it by specifying the skipDistro property:

mvn clean install -DskipDistro -s settings-example.xml

Integration tests

Integration tests can be run from the integrationtest module and the default behaviour is to download the WildFly application server, unpack the modules in it and run the tests using Arquillian.


Be careful when using on existing installation since the modules used by the build are going to be extracted into the

server you want to run the test, changing the original setup.


For executing the tests in the mongodb and integrationtest/mongodb modules, by default the embedmongo-maven-plugin is used which downloads the MongoDB distribution, extracts it, starts a mongod process and shuts it down after test execution.

If required, you can configure the port to which the MongoDB instance binds to (by default 27018) and the target directory for the extracted binary (defaults to ${}/embeddedMongoDb/extracted) like this:

mvn clean install -s settings-example.xml -DembeddedMongoDbTempDir=<my-temp-dir> -DembeddedMongoDbPort=<my-port>

To work with a separately installed MongoDB instance instead, specify the property -DmongodbProvider=external:

mvn clean install -s settings-example.xml -DmongodbProvider=external

This assumes MongoDB to be installed on localhost, using the default port and no authentication. If you work with different settings, configure the required properties in (for the tests in mongodb) and/or the environment variables MONGODB_HOSTNAME MONGODB_PORT MONGODB_USERNAME MONGODB_PASSWORD (for the tests in integrationtest/mongodb) prior to running the tests:

export MONGODB_HOSTNAME=mongodb-machine
export MONGODB_PORT=1234
export MONGODB_USERNAME=someUsername
export MONGODB_PASSWORD=someP@ssw0rd
mvn clean install -s settings-example.xml -DmongodbProvider=external

Finally, you also can run the test suite against the in-memory "fake implementation" Fongo:

mvn clean install -s settings-example.xml -DmongodbProvider=fongo


For running the tests in the couchdb module an installed CouchDB server is required. Specify its host name by setting the environment variable COUCHDB_HOSTNAME prior to running the test suite:

export COUCHDB_HOSTNAME=couchdb-machine

If this variable is not set, the couchdb module still will be compiled and packaged but the tests will be skipped.


Latest Documentation:

Bug Reports:

Hibernate JIRA (preferred):

Free Technical Support:


If you want to contribute, come to the mailing list or join us on #hibernate-dev on freenode (login required)

This software and its documentation are distributed under the terms of the FSF Lesser Gnu Public License (see license.txt).

Something went wrong with that request. Please try again.