【问题标题】:How to use a different value for hibernate.hbm2ddl.auto in the production environment如何在生产环境中为 hibernate.hbm2ddl.auto 使用不同的值
【发布时间】:2017-05-11 08:05:17
【问题描述】:

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

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

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

如何解决这个问题?

【问题讨论】:

    标签: java jpa jakarta-ee deployment persistence


    【解决方案1】:

    您永远不应将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>
    

    【讨论】:

    • 谢谢,Flyway 似乎是最干净的选择!
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 2017-12-20
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多