【问题标题】:Hibernate create, don't update, don't drop.Hibernate 创建,不更新,不丢弃。
【发布时间】:2015-02-16 07:35:46
【问题描述】:

hibernate orm 选项,create、create-drop、update 和 validate。

有没有人说,创建一次,但不删除或更新?

一个选项说,如果不存在就创建,不要更新,不要丢弃?

【问题讨论】:

  • 我会推荐@itguysouth 下面所说的内容,或者您​​可以使用“create”,然后在创建实体后将其设置回无。
  • @AbdullahShaikh 那么你应该检查我对他的回答。就是这么好。

标签: sql spring hibernate jpa jpa-2.0


【解决方案1】:

您正在寻找的 create-once 不作为休眠标志存在。对于您的方案,最好使用外部工具管理数据库的 DDL,而不是使用 hibernate.hbm2ddl.auto。就个人而言,我可以推荐http://www.liquibase.org/,它被宣传为数据库的源代码控制,并且在处理具有快速变化模型的不同分支时,它确实很好地支持开发。

Liquibase 以 changeLog.xml 文件为中心,该文件存储应用到数据库的所有更改。因此,当您对模型进行更改时,您会生成一个差异,从而为 changeLog.xml 生成 xml 条目。底层数据库跟踪应用的更改,因此您可以重新创建、应用更新、生成迁移 SQL、清空数据库或保持原样,一切尽在您的掌控之中。

【讨论】:

  • 我只想启动并运行,只想创建该死的数据库而不用摆弄,从创建开始,然后手动关闭它。在 docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch03.html 部分 hibernate.hbm2ddl.auto create 被提及为一个选项。
  • 但不仅仅是使用“create”,而是切换到“none”,或者留空乳清你有你的数据库。
  • 是的,这正是我不想做的。我不想启动应用程序,将其关闭,进入生产中的某个随机文件,更改它然后重新启动它。如果我以后需要删除它,我必须 a) 手动删除数据库,然后重复这个 f***g 步骤,两次!
【解决方案2】:

这是一个总结 hibernate.hbm2ddl.auto 选项的现有讨论。 hbm2ddl discussion

使用 Hibernate 单独管理物理数据库层的商店很常见,例如使用由 DBA 直接运行的 SQL DDL 脚本,而不是允许 Hibernate 工具修改数据库模式。如果您仍然希望 Hibernate 为您运行这些,可以使用 hibernate.hbm2ddl.import_files 选项通过提供自定义脚本文件来手动调整您的 DDL 操作。

在您的情况下,如果您希望 ORM 决定物理模型而不是相反,您可以将 hbm2ddl.auto 保留为“更新”。另一种选择是使用实体映射或元数据(注释)作为指导输入以编程方式生成 hibernate.hbm2ddl.import_files 中引用的脚本文件。

【讨论】:

  • 我不想更新它。我只想方便地创建它,但不要删除或更改它。太奇怪了,没有人认为这是一个可能的用例。有一天我会研究 import_files 选项,但现在我只想将战争发送到服务器,然后按我想要的次数点击运行、关闭、运行、关闭运行,而无需更改表、删除或其他任何东西。
  • 我明白了。只需将其保留为无或然后验证,如果有模型更改,则自己手动进行更改。如果没有更改,则保留为 none 将大大减少您的服务器启动时间。
  • 我希望它只是创建 dabatase。我现在必须以编程方式检查这个 somehome。
【解决方案3】:

我必须为此编写自己的解决方案。使用 hibernate 或 jpa 是不可能的。

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2013-05-02
    相关资源
    最近更新 更多