В общем, это плохая идея. create-drop
и update
предназначены для тестирования и не рекомендуются для производственного использования.
Производственные системы всегда должны использовать validate
. Не используйте Hibernate для создания таблиц.
Вам лучше использовать такой инструмент, как liquibase , который может безопасно обрабатывать обновления баз для обновлений приложений. Поскольку вы используете Spring, вы можете настроить профили в XML, которые могут работать с параметром maven -P, чтобы у вас был профиль для производства, такой как
<beans profile="liquibase">
<bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase" depends-on="systemProperties">
<property name="dataSource" ref="dataSource" />
<property name="changeLog" value="classpath:liquibase-changelog.xml" />
<property name="defaultSchema" value="${jdbc.schema}" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" depends-on="liquibase">
<property name="persistenceUnitName" value="PersistenceUnit" />
</bean>
</beans>
Который затем устанавливает базу данных при запуске. Liquibase будет знать, какие операторы были выполнены, и запускать только операторы alter table
или подобные, когда это необходимо.
Это стоит усилий.