如何在生产环境中为hibernate.hbm2ddl.auto使用不同的值

How to use a different value for hibernate.hbm2ddl.auto in the production environment

在我的 Java EE 应用程序中,我总是使用此选项配置我的 persistence.xml 文件:

<property name="hibernate.hbm2ddl.auto" value="create-drop">

这对测试来说真的很方便。当我提交我的代码时,persistence.xml 使用此配置提交。但是,当我部署到生产环境时,我不想删除我的数据库。

如何克服这个问题?

您永远不应将 hibernate.hbm2ddl.auto 用于企业应用程序。最好使用 Flyway 进行生产和集成测试。

也就是说,即使使用像 H2 这样的内存数据库也是不可取的。如果将数据文件夹映射到 tmpfs.

,您可以 运行 在 MySQL 和 PostgreSQL 上进行几乎与 H2 一样快的集成测试

所以,回到你的问题。如果您真的只需要在测试环境中而不是在生产环境中重新创建表,那么您需要为 hibernate.hbm2ddl.auto 属性:

使用 Maven 参数
<property name="hibernate.hbm2ddl.auto" value="${hbm2ddl.value}">

对于生产配置文件,值为:

<hbm2ddl.value>none</hbm2ddl.value>

而对于开发配置文件(默认),值为:

<hbm2ddl.value>create-drop</hbm2ddl.value>