Hibernate 3.2 Released with Java Persistence Provider Support
- Transparent and customizable persistence context management in any Java environment;
- Highly scalable optimistic locking in a cluster with the new JBoss Cache provider;
- Declarative data filters for transparent definition of dynamic data views; and Enhanced query options and query language.
InfoQ sat down with Steve Ebersole of JBoss to discuss the release. In response to how being a Java Persistence provider will effect ongoing innovation in Hibernate Core Ebersole answered:
Hibernate being an implementation of the Java Persistence (JPA) specification will have very little impact on our ability to continue to innovate and to evolve Hibernate as a project. Only minimal portions of Hibernate core actually required any changes at all for the implementation of JPA due to packaging and the internal design using an event-driven architecture. These things combined leave us pretty free to continue to add enhancements and features to the core without effecting JPA compliance. But even in the realm of the Hibernate Annotations and Hibernate EntityManager subprojects, which are more directly involved in the JPA implementation, you'll continue to see innovations and completely new feature sets.
Ebersole then commented on how Hibernate is evolving beyond core persistence:
Naturally all the work that went into implementing JPA was a major effort on the part of many folks. Outside of the JPA work, the biggest changes were (a) completion of stored procedure support, (b) slew of enhancements in HQL, and (c) annotation feature set. Probably the most innovative thing we have been doing during the 3.2 timeframe is some of the "satellite" feature sets starting to grow around Hibernate Annotations and the core's event architecture. Namely the Hibernate Validator and Hibernate Lucene features. Not to mention that most of the Hibernate team members have also contributed some time and effort to the JBoss Seam project, which is also a truly amazing innovation built largely upon principles seen over and over during our work with Hibernate users.
The conversation then shifted to how Hibernate stacks up against other JPA providers such as Kodo:
One of the reasons Hibernate agreed to help drive the Java Persistence specification was that it was seen as an opportunity to help continue to drive innovation in the space. We are happy to see some competition in this space now and moving forward. The biggest differentiators, as is usual when comparing specification implementations, are non-specification features - the so-called vendor extensions. Hibernate has a far more broad and compelling feature set than any of the other JPA implementations. First you have to start with the different ways in which a user can map object structures onto database structures, and Hibernate has by far the richest mapping constructs in the space. And as of this release, Hibernate Annotations supports the JPA mapping subset as well as the full range of the Hibernate mapping constructs. Hibernate has some interesting batch-process type features such as bulk HQL operations and the StatelessSession API. And of course, Hibernate has innovative features like entity-modes, data filters, Query-by-Criteria and Query-by-Example facilities, and data replication capabilities to name a few. And in terms of performance, there have to-date been no valid benchmarks of object persistence providers let alone JPA implementations. However, when they do come we are extremely confident that Hibernate will show extremely well alongside the other certified JPA providers.
Finally, Ebersole discussed what he sees as next for object persistence. First he sees persistence providers driving more application stack functionality as is the case with Hibernate's Lucene and validator extensions. He also sees an expansion beyond object persistence to handle other forms of state representation. In Hibernate for example a user's data might be represented as a DOM tree instead of collection of objects.