首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate : hbm2ddl.auto value=“更新”或“无”

Hibernate : hbm2ddl.auto value=“更新”或“无”
EN

Stack Overflow用户
提问于 2016-02-15 02:12:52
回答 2查看 8.2K关注 0票数 1

我通过Hibernate使用JPA ..。

在我的persistence.xml中,我将hibernate配置为更新模式,如下所示:

代码语言:javascript
复制
 <property name="hibernate.hbm2ddl.auto" value="update"/>

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

代码语言:javascript
复制
   <property name="hibernate.hbm2ddl.auto" value="none"/>

我认识的高级开发人员对我说第二种方法更好.因为这是DBA在所有好的企业里都会做的习惯。但我想得到更多的解释..。我想知道为什么第二种方法更好?为什么我们不应该让JPA管理表格和它自己的关系。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-15 11:37:15

由于许多原因,特别是在生产环境中,这是不好的。

  • 版本控制--您可能想要对数据库进行版本化,大多数人通过跟踪db更改来手动完成,为每个更改准备一个还原脚本是很好的。在版本发行版中,重要的是要有一个回滚计划,以防出现问题。
  • 脚本执行失败--在充满数据的数据库中,添加非空列的alter将失败,仅仅因为现有记录没有该列。因此,还有更多的步骤,最好是手动处理。
  • 偶然的变化。您的团队中的开发人员可能会意外地提交配置错误的实体,并对您的模式造成严重破坏。

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

票数 1
EN

Stack Overflow用户

发布于 2016-02-15 10:01:56

通常情况下,最好把自动ddl留给零。这是因为您可能意外地导致集成/生产环境中的更新,而不是开发。其次,从hibernate自动生成的脚本可能与dba使用的约定不一致。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35400503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档