我通过Hibernate使用JPA ......
在我的persistence.xml中,我将hibernate配置为更新架构,如下所示:
<property name="hibernate.hbm2ddl.auto" value="update"/>
让JPA管理我们的数据库或者自己管理数据库(手动)是否更好......
<property name="hibernate.hbm2ddl.auto" value="none"/>
我认识的高级开发人员告诉我,第二种方法更好......因为这是DBA在所有好企业中所做的习惯..但我想要有更多解释......我想知道为什么第二种方法更好?为什么我们不应该让JPA管理表格及其自身的关系......
答案 0 :(得分:2)
通常最好将aut ddl保留为none。 这是因为您可能会在开发之外的集成/生产环境中意外导致更新。 其次,来自hibernate的自动生成的脚本可能与dba使用的约定不一致。
答案 1 :(得分:1)
由于许多原因,这种情况并不好,特别是在生产环境中。
版本控制 - 您可能希望对数据库进行版本控制,大多数人都这样做 通过跟踪数据库更改手动,最好为每个更改准备一个还原脚本。这对版本发布很重要 事情变坏的回滚计划。
脚本执行失败 - 在一个充满数据的数据库中,有一个alter table 添加非空列将失败,只是因为现有记录 没有这个专栏。因此,还有其他最佳处理步骤 手动
意外更改。您团队中的开发人员可能会意外 提交错误配置的实体并对您的架构造成严重破坏。
最好是将hibernate.hbm2ddl.auto的值保持为validate
,这样就可以根据数据库结构验证实体映射,如果有任何不匹配,Hibernate会发出警告。