Это два с половиной года позже, но я выскажу особое мнение. Вы должны иметь возможность вносить любые необходимые изменения в файлы сопоставления с помощью файла hibernate.reveng.xml или пользовательской ReverseEngineeringStrategy. Для самих классов вы всегда должны генерировать базовые классы и расширять их классами, содержащими пользовательский код.
Например, сгенерируйте com.company.vo.generated.CustomerGenerated и добавьте его с помощью com.company.vo.custom.Customer. Генерация кода должна перезаписывать все классы в сгенерированном пакете, но не в пользовательском пакете (хотя Hibernate Tools может создавать эти пользовательские классы в целевом каталоге, чтобы вы могли копировать и вставлять пробелы в пользовательский каталог по мере необходимости). Таким образом, вы можете переопределить методы для equals, toString и т. Д. В пользовательских классах и не потерять свои изменения при регенерации. Также обратите внимание, что рекомендуется не проверять сгенерированный код в SCM.
На этом сайте есть несколько замечательных примеров того, как этого добиться, используя Maven, плагин Hibernate3 и плагин build helper. У большинства из них есть очень полезные ответы Паскаля Тивента. Этот метод прекрасно работает для меня, и хотя есть некоторая кривая обучения, замечательно иметь возможность распространять изменения базы данных в приложении с помощью одной команды Maven.