Red Hat

Hibernate OGM roadmap

Hibernate OGM roadmap

Hibernate OGM is young and community driven. As such the roadmap constantly evolves to reflect the users needs. You can find a finer grained roadmap in our issue tracker but this page is a good and concise view of where we are going. Dates are generally omitted, we release when we are ready.

Future releases

Describe plans for future releases.

Hibernate OGM 4.1

Performance and stabilization

Review performance and overall choices before going final. In particular, database round trips and query execution speed (see below). Reuse of the data loaded between an entity and its association lookup.

Improved Neo4J navigation

Explore label (Neo4J 2).
Support Neo4J with ability to keep node reference for cheap navigation when resolving proxies thus avoiding unnecessary lookups.

  • Store tuple as data snapshot via IdentityMap or enhanced entity

  • Use stored tuples as navigation tools instead of fetching (graph databases)

Error report and compensation API

Offer the ability to collect errors on partially executed "transactions". Offer ability to react to these errors.

Additional query support

Query support for Neo4J

Support JP-QL and native queries.

Query support for CouchDB

Support JP-QL and native queries.

Clean query parser design
  • Fix how the field bridge is selected for a given property.

    • Automatic approach

    • Manual overriding option (convention based, annotation or SPI?)

  • Use Hibernate ORM metadata (EntityPersister) to find the type of a property for HQL literal conversion

    • extract this logic and reuse it for all backends

Move to proper OgmLoader implementations

Discuss how to properly load objects via the OgmLoader approach.

Cache query plans

Look at Hibernate ORM’s HQLQueryPlan which essentially caches results of a query translator which in term calls the entity loader. A similar design or even interface result is probably possible

Various query improvements
  • Make sure flush is executed before a query.

  • Support for projection and projection of entities

  • Polymorphic query support (MongoDB)

  • restriction on embedded objects (MongoDB)

Hibernate OGM 4.2

Custom types

Offer custom types like Hibernate ORM’s user type.

Write-behind cross-backends

Offer ability to store into two backends. In particular, store data in a NoSQL backend and a relational database.

Exploration of Cassandra

Implement the Cassandra datastore and its CQL query backend.

Exploration of HBase

Implement the HBase datastore and its query support

Migrate to Hibernate ORM 5

When Hibernate ORM 5 is out, look at migrating to the new codebase.

Offer per session and per statement option customization

eg for a given call, influence the quorum factor

Set benchmark solution and reusable test suite with automated test

Start exploring benchmark solution with regular tests in a CI. Add reusable TCK for both CRUD and query support.

Hibernate OGM 4.3

Polyglot persistence

Offer ability to store entities into different backends. Entities could be in either backends.

Use Teiid query engine for joins and aggregation

Explore reuse of Teiid query engine for smarter queries

General NoSQL and query depth and breath improvements

Continue mapping of query engine on other NoSQL Continue converage of breath of supported queries

Map/Reduce on queries

Map/Reduce based resolution of subgraphs of a query

Infinispan over HotRod

Support non library mode for Infinispan

Hibernate OGM Next

Migration engine

Offer options to support transparent migrations when (non)schema has migrated. Annotation based or API based.
For example, one would rename a property from a to b, the migration engine will know that, read the old value if present, and migrate to the new schema.

Denormalization engine

Offer ability to store data in different structures denormalized. Let loading and queries use these denormalized versions for faster retrieval. The goal is to offer a declarative approach instead of the imperative approach sued usually in the NoSQL land.

Past releases

An aggregated changelog of what has happened. We are too lazy to go back down to the history of time so we will start at 4.0 Beta 3.

Hibernate OGM 4.1 Beta 1

Annotation based option system

Each datastore can use specific annotations to customize its behavior. The user can use either annotations or a programmatic API

  • offer ability for each dialect to react to metadata specific information

  • programmatic and annotation based

  • for different scopes: generic, type and properties

  • retrofit this for MongoDB’s options

CRUD support for CouchDB

Support the CouchDB document DB to read and store entities and associations.

JPA related improvements

Compatibility with JPA 2.1 and Hibernate ORM 4.3.
Support for the various EntityManager.createQuery methods including named queries.

Batch changes per transactions

Offer the GridDialect the option to receive a batch of operations to execute. Some drivers are better that way and can increase the isolation level. MongoDB is the first dialect benefiting from that support.

Hibernate OGM 4.0 Beta4

CRUD support for Neo4J

Support the Neo4J Graph DB to read and store entities and associations.

Native query

Offer the ability to pass a native backend query and bind the result to an entity. All flexibility of the native underlying query system is available at the cost of portability.

Use immutable metadata info to lower memory pressure

Data passed to the GridDialect are made of:

  • an object specific data (id etc)

  • an object type generic data (table name, column name etc)

The object type information could be shared to lower memory consumption and avoid the object creation cost.

Hibernate OGM 4.0 Beta3

Improved query support around projection and operators

Supported operators =, <, <=, >, =>, IN, LIKE, BETWEEN.
Supported boolean combinations: AND, OR, NOT.
Support for simple property projections and embedded objects.

JP-QL query support for MongoDB

Execute JP-QL queries as MongoDB queries.

Discriminator based hierarchy

Support for hierarchy of classes using a discriminator column as defined by JPA.

JBoss AS 7 integration module

Add Hibernate OGM support by copying the module in the JBoss AS module repository.

Support for Hibernate Search mass indexing

Mass indexing now works out of the box when using Hibernate OGM.

Upgrade to Hibernate ORM 4.2 and JPA 2.1
back to top