Схема приложений может развиваться во времени; если у вас несколько установок, которые могут быть в разных версиях, у вас должен быть какой-то способ убедиться, что ваше приложение, какой-либо инструмент или сценарий способны поэтапно переносить схему и данные из одной версии в любую следующую.
Наличие всей вашей настойчивости в отображениях Hibernate (или аннотациях) является очень хорошим способом для контроля эволюции схемы.
Следует учитывать, что эволюция схемы имеет несколько аспектов, которые следует учитывать:
эволюция схемы базы данных в
добавление дополнительных столбцов и таблиц
удаление старых столбцов, таблиц и
отношения
заполнение новых столбцов значениями по умолчанию
Инструменты Hibernate важны, в частности, в том случае, если (как показывает мой опыт) у вас разные версии одного и того же приложения в разных типах баз данных.
Точка 3 очень чувствительна в том случае, если вы используете Hibernate, как в случае, если вы вводите новое булево значение или числовое свойство, если Hibernate найдет какое-либо нулевое значение в таких столбцах, если вызовет исключение.
Итак, что бы я сделал: действительно используйте возможности обновления схемы средствами Hibernate, но вы должны добавить к нему некоторые данные и обратный вызов для обслуживания схемы, например, для заполнения значений по умолчанию, отбрасывания больше не используемых столбцов и т. П. Таким образом, вы получаете преимущества (независимые от базы данных сценарии обновления схемы и избегаете дублирования кодирования обновлений, в постоянных и в сценариях), но вы также охватывает все аспекты операции.
Так, например, если обновление версии заключается просто в добавлении свойства со значением varchar (следовательно, столбца), которое может по умолчанию иметь значение null, с автоматическим обновлением все будет готово. Там, где требуется больше сложности, потребуется больше работы.
Это предполагает, что приложение при обновлении способно обновлять свою схему (это может быть сделано), что также означает, что оно должно иметь права пользователя, чтобы сделать это на схеме. Если политика клиента запрещает это (скорее всего, случай с Ящерицей), вам придется предоставить сценарии, специфичные для базы данных.