Inactive Bloggers

The latest stable release of Hibernate Search, version 5.2.0.Final, is now available in Maven mirrors and as traditional downloads from Sourceforge.

Multi-tenancy integration

The most visible new feature is that it now transparently integrates with Hibernate ORM's support for multi-tenancy. The Hibernate Search documentation on multi-tenancy describes how using this near feature from Hibernate ORM will affect the content of your indexes and how it is transparently applied to any Query operation.

The good news is that, while you might want to read the documentation to better understand how it works exactly, the documentation is short as it's all pretty much automatic: full-text queries are automatically filtered on the tenant identifier, providing the same semantics as you would with any other kind of query.

Other improvements

This version incorporates many more improvements which we won't list in detail here. As usual you might find some benefits in the areas of performance and efficiency, improved javadocs, improved OSGi support. The Query builder DSL is improving thanks to the ever increasing great feedback. Keep it coming, we'll keep improving!

A reminder on the requirements for this version

  • Java 7 or later
  • Hibernate versions 4.3.x
  • Apache Lucene versions 4.10.x

What's coming next?

We've been working on a fully renewed Faceting support. Version 5.3.0.Beta1 will be available very soon as well, and include all of this work. Brace yourself though! While it will be API compatible, it will require some changes to your mapping: watch this space.

Get the update!

Everything you need is available on Hibernate Search's web site. Download the full distribution from here, or get it from Maven Central, and don't hesitate to reach us in our forums.

30. Apr 2015, 06:28 CET, by Steve Ebersole

I have just finished releasing Hibernate O/RM 5.0.0.Beta2. Beyond Beta1, this release adds:

  1. Support for Spatial/GIS data through importing Hibernate Spatial.
  2. Complete redesign of bulk id tables used to support update/delete queries against multi-table structures. The redesign helps better fit what different databases support.
  3. Redesign of transaction management
  4. Much improved (and still improving!) schema management tooling for export, validation and migration.

At this point, 5.0.0 is getting a lot of testing. So even though it is still in Beta I am feeling pretty confident of its quality. I opted for another Beta here instead of CR1 for a few reasons:

  1. Investigate whether we want to convert Hibernate's native APIs (Session, etc) to be typed. There is one especially tricky case that needs to be figured out. A major release like this would be the time to do that
  2. I have just introduced some pretty significant Transaction changes since Beta1. I felt it would be prudent to have one more Beta to allow people time to try out those changes and allow for additional changes based on feedback
  3. I would still like to complete deprecating the Settings contract. The last piece there is the discussion I started earlier on the dev list wrt its usage in SPI contracts (L2 cache, etc). This effects a few integrations.
  4. I am working on better Karaf support for hibernate-osgi. Specifically creating a Karaf features respository that users can simply pick up and use. That work is well under way, but ongoing.

As always, see for information on obtaining Hibernate O/RM.

Last night we released Hibernate Search 5.2.0.Beta1, and as many users requested we worked on Multi-Tenancy support.


This feature was available since some time in Hibernate ORM, but while Hibernate Search would not prevent you to use it, it wouldn't apply the same strict isolation on full-text queries. This is all implemented now, and is super easy to use.

How to use it

It's not different than any usage of Hibernate ORM's multi-tenancy. After you open a tenant-aware 'Session', changes will be tagged as belonging to a specific tenant automatically. When performing a full-text query, you'll only get results from the current tenant. When rebuilding the index using the MassIndexer, it will rebuild only the index from the current tenant. When performing a purgeAll operation, it will only delete entries which belong to the current tenant.

Implementation and Sharding considerations

In this implementation, as suggested by some of you we didn't create a fully independent index for each tenant, but each Document in the index gets tagged by the tenantid.

I am wondering if we should also implement a variation in which we keep each tenant's data into a fully independent index: please let us know what you think about that. The current approach of a single index works better if you have a very high amount of tenants, as there are practical limits in how many indexes can be managed. Another benefit of the current approach, is that you can easily plug in a clever custom sharding implementation; by working on a modulo approach among a list of tenants, you can tune it for a reasonable level of separation without necessarily having as many indexes as tenants.

Performance on polymorphic entity loading

The performance improvement highlight of the month goes to a revisited strategy on our internal usage of criterias when loading polymorphic results. If you were loading full-text results from a non-trivial class hierarchy you might notice a sweet performance improvement. For more details see HSEARCH-1793.

MassIndexer now supporting a Cancel operation

The async variation of the MassIndexer returns a Future, but this didn't implement the cancel operation. Many thanks to Yoann Gendre for implementing it!

Other improvements

For the list of minor improvements, please refer to the changelog.

Get the update!

Everything you need is available on Hibernate Search's web site. Download the full distribution from here, or get it from Maven Central, and don't hesitate to reach us in our forums.

4.3.9.Final and 4.2.19.Final were released 15/Apr/2015.

4.2.18.Final was actually released 28/Jan/2015. At the time of that release there were problems with Unfortunately, after those issues were resolved, the announcement for 4.2.18.Final fell through the cracks, so I am covering that release here as well.

4.2.18.Final and 4.2.19.Final fixes several regressions. Those fixes were also included in 4.3.9.Final.

4.3.9.Final includes mainly bugfixes with some improvements:

  • improved support for AttributeConverters (backported from 5.0.0.Beta1);
  • EntityGraph bugfixes;
  • fixes for load plan bugs that caused problems with CompositeCustomType IDs, embeddable @MapKey, maps containing embeddable keys;
  • fix for a classloading bug that affects Hibernate under GlassFish 4.0 HHH-9446 that was introduced by in 4.3.6 by HHH-8818; by setting an environment variable, Hibernate reverts to pre-HHH-8818 behavior;
  • fix for Envers to work with dynamic (non-POJO) entities.

JBoss Nexus:
Maven Central: (should update in a couple of days)

4.3.9.Final Downloads: 4.3.9.Final ZIP, 4.3.9.Final TGZ
4.2.18.Final Downloads: 4.2.18.Final ZIP, 4.2.18.Final TGZ
4.2.19.Final Downloads: 4.2.19.Final ZIP, 4.2.19.Final TGZ

While we were in Newcastle for a meetup we sat down with John, Mícheál and John about FeedHenry, what it is and how it is going with the opensourcing of their platform.

Also you will hear how the name is tied to royalty!

Find it all in the Show notes and episode.

Have fun!

Showing 6 to 10 of 1256 blog entries