Hibernate.orgCommunity Documentation

Chapter 1. How to get help and contribute on Hibernate OGM

1.1. How to get help
1.2. How to contribute
1.2.1. How to build Hibernate OGM
1.2.2. How to contribute code effectively
1.3. How to build support for a data store
1.3.1. DataStore providers
1.3.2. Dialects
1.3.3. Entities
1.3.4. Associations
1.3.5. Configuration
1.3.6. Types
1.3.7. Tests

Hibernate OGM is a young project. Join and help us shape it!

First of all, make sure to read this reference documentation. This is the most comprehensive formal source of information. Of course, it is not perfect: feel free to come and ask for help, comment or propose improvements in our Hibernate OGM forum.

You can also:

  • open bug reports in JIRA
  • propose improvements on the development mailing list
  • join us on IRC to discuss developments and improvements (#hibernate-dev on freenode.net; you need to be registered on freenode: the room does not accept "anonymous" users).

Welcome!

There are many ways to contribute:

  • report bugs in JIRA
  • give feedback in the forum, IRC or the development mailing list
  • improve the documentation
  • fix bugs or contribute new features
  • propose and code a datastore dialect for your favorite NoSQL engine

Hibernate OGM’s code is available on GitHub at https://github.com/hibernate/hibernate-ogm.

Hibernate OGM supports various data stores by abstracting them with DatastoreProvider and GridDialect. The supported features vary between data stores, and dialects do not have to implement all features. Hibernate OGM implements a TCK (Technology Compatibility Kit) to verify interoperability and features of the dialect. Hibernate OGM supports a variety of document- and key-value-stores and ships with some abstraction and utility classes for document- and key-value-stores (like KeyValueStoreProperties and DocumentStoreProperties).

A data store can have one or more dialects. Dialects describe the style how data is mapped to a particular data store. NoSQL data stores imply a certain nature, how to map data. Document-oriented data stores encourage an entity-as-document pattern where embedded data structures could be stored within the document itself. Key-value data stores allow different approaches, e.g. storing an entity as JSON document or event storing individual key-value pairs that map the entity within a hash table data structure. Hibernate OGM allows multiple dialects per data store and users may choose the most appropriate one.

The most basic support is provided by implementing the GridDialect interface. Implementing that interface is mandatory to support a specific data store.

A GridDialect usually supports:

A dialect may optionally implement one or more additional facet interfaces to provide a broader support for certain features:

Features of a QueryableGridDialect

Features of a BatchableGridDialect

Features of a IdentityColumnAwareGridDialect

Features of an OptimisticLockingAwareGridDialect

Features of a MultigetGridDialect

Hibernate OGM is not opinionated by which means data is stored/loaded for a particular data store, but the particular dialect is. Hibernate OGM strives for the most natural mapping style. The idea is to facilitate integration with other applications of that database by sticking to established patterns and idioms of that store.