在Hibernate中,如果我们将hbm2ddl.auto设置为create / create-drop,那么它将删除旧模式并在启动时创建新模式。这意味着,它还会删除数据吗?我怀疑是否删除了所有内容,那么我们如何才能检索旧数据呢? (例如:用户注册详细信息)以及在生产环境中应该使用的正确选项是什么?
如果我错了,请纠正我。答案 0 :(得分:1)
基本上,它会在关机时删除受管理的实体表(并非计划中的所有实体表),并在启动时重新创建它们。根据您的问题的意思;是的,数据也从表中删除。它不会删除整个架构,而只会删除实体管理器中的实体。
答案 1 :(得分:0)
在生产环境中应该使用的正确选项是什么?
恕我直言,生产环境唯一有效的选项是validate
。由于错误配置,简单的错误或拼写错误,其他所有内容都可能导致丢失数据/破坏数据库架构的潜在风险。
使用迁移工具进行架构更新,因为它们提供了"版本控制"在你的模式允许它在depoyment之前进行测试,并恢复更改。
答案 2 :(得分:0)
验证 - 现有架构
更新 - 仅在创建后更新架构
每次都创建模式。
此处还有一个很好的解释Hibernate hbm2ddl.auto possible values and what they do?