【问题标题】:Hibernate : hbm2ddl.auto value="update" or "none"休眠:hbm2ddl.auto value="update" 或 "none"
【发布时间】:2016-02-15 19:37:15
【问题描述】:

我正在通过 Hibernate 使用 JPA...

在我的 persistence.xml 中,我将 hibernate 配置为更新架构如下:

 <property name="hibernate.hbm2ddl.auto" value="update"/>

让 JPA 管理我们的数据库更好还是自己(手动)管理数据库更好...

   <property name="hibernate.hbm2ddl.auto" value="none"/>

我认识的高级开发人员对我说,第二种方法更好……因为这是所有优秀企业中 DBA 的习惯……但我想有更多解释……我想知道为什么第二种方法更好?为什么我们不应该让 JPA 自己管理表和关系......

【问题讨论】:

    标签: hibernate jpa database-administration


    【解决方案1】:

    通常最好将 aut ddl 保留为 none。 这是因为您可能会意外地在开发以外的集成/生产环境中导致更新。 其次,hibernate 自动生成的脚本可能与 dba 使用的约定不一致。

    【讨论】:

      【解决方案2】:

      由于很多原因,它并不好,尤其是在生产环境中。

      • 版本控制 - 您可能想要对数据库进行版本控制,大多数人都这样做 通过手动跟踪数据库更改,最好为每次更改准备一个还原脚本。在版本发布上拥有 万一事情变糟的回滚计划。

      • 脚本执行失败 - 在充满数据的数据库中,更改表 添加非空列将失败,仅仅是因为现有记录 没有这个栏目。所以有一些额外的步骤是最好处理的 手动。

      • 意外更改。您团队中的开发人员可能会不小心 提交错误配置的实体并对您的架构造成严重破坏。

      最好将 hibernate.hbm2ddl.auto 的值保持为validate,这样实体映射会根据数据库结构进行验证,如果有任何不匹配,Hibernate 会发出警告。

      【讨论】:

        猜你喜欢
        • 2011-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-22
        • 2012-05-24
        • 2014-11-16
        • 2010-09-18
        相关资源
        最近更新 更多