JBoss Envers можно использовать всегда, когда вы используете Hibernate в качестве поставщика сохраняемости. Это на самом деле в комплекте с новым Hibernate 3.5. Envers - отличный инструмент, но у меня есть один недостаток - вы можете создавать версии только для тех объектов, которые объединяют версионные объекты. Это означает, что если вы хотите создать версию Entity A, и у нее есть поля типов B и C, которые также являются сущностями - B и C также должны иметь версии от Envers - если ваши сущности имеют тесную связь (что является плохим дизайном, это вполне возможно) вам придется версия всего проекта, и это требует некоторых дополнительных затрат.
Мы лично выбрали более легкое решение для управления версиями после того, как изучили Envers, но если оно соответствует вашим требованиям - вы обязательно должны его использовать. Я не знаю других инструментов, предлагающих его возможности.