This library simplifies the process of versioning JPA classes that are persistent. It is designed to facilitate the management of changes made to the classes in the database.
Envers creates a table for each versioned entity to store the schedule of changes made to the entity, and you can capture and conduct historical data queries with ease. The library also features the concept of revisions, similar to Subversion, where one transaction commit equals one revision, except if the transaction doesn't modify any versioned entities. As revisions are global and carry revision numbers, you can check for various entities, retrieving a partial view of the database at that specified revision.
This library works seamlessly with Hibernate and Hibernate Entity Manager (Hibernate.org), and for proper functionality, entities should have unique immutable identifiers, also known as primary keys. Envers can work with Hibernate, both as a standalone, inside JBoss AS, with JBoss Seam or Spring, so usage is limitless.
In the future, Envers will support versioning arbitrary relationships and include support for "revisioning groups," which will decentralize the revisions table when independent groups of entities are versioned. Additionally, a salient feature will be added, which provides the possibility to store only diffs between revisions, saving storage space while handling strings and byte arrays only.
Version 1.2.1.GA: N/A