The Envers project makes it simple to version (JPA) entities. The only thing required is annotating them with @Versioned. Storing historical data (versions) is completely transparent to the developer, and the entities may be handled as always. Not only basic properties of an entity can be versioned, but also relations, making it possible to view parts of the database as they were at a given revision. Moreover, Envers provides a straightforward interface for retrieving historical data, a criteria-like query interface, and the possibility to store additional information alongside each revision.


This is the first general availability release, stabilizing the preview and beta versions. Minor bugs were fixed. Versions of entities are generated when collections change. For more information on what this means, see Envers 1.0.0.GA released! at Blog of Adam Warski.

URL: community driven