Hibernate自动创建表。这有什么问题吗?

时间:2013-02-02 20:13:46

标签: hibernate

首先,我应该说我是Hibernate技术的初学者。 (嗯,实际上,我已经在一些项目中使用过它)。但我想知道你对此的看法。 我使用Hibernate注释以这种方式创建我的数据库的所有表:

  • 使用“hibernate.hbm2ddl.auto = create-drop”,(一遍又一遍)直到我最终得到我需要的数据库模型。

  • 然后我尝试从Hibernate生成的数据库模型中获取SQL脚本(通过示例使用Workbench)。

  • 我删除了我的数据库,然后再次创建它,但现在使用SQL脚本。

  • 之后,在我的项目中,我将属性“hibernate.hbm2ddl.auto = create-drop”更改为“hibernate.hbm2ddl.auto = update”。

我想知道,我是否以正确的方式使用Hibernate?或者始终建议首先创建数据库模型。 (或者,这取决于你正在做什么样的项目)

对不起我的拼写错误,如果有的话。

2 个答案:

答案 0 :(得分:1)

您的方法是可以接受的,这就是您通常的原型并从新项目开始的方式。但是一旦你稳定下来,你应该采取更多的行动。首先检查Hibernate生成的脚本。自定义外键名称,约束,数据类型等。它们并不总是完美的。

另外请注意update策略。这并不总是正确的。在现实世界中,一旦您推出应用程序的第一个版本,您将需要更稳定的工具,如来管理数据库迁移。

答案 1 :(得分:0)

我认为在开发环境中这是可以的,但你显然不能在生产中删除表。

我们之前遇到过类似的问题,我们曾经让hibernate在本地创建表,但在qa和staging上使用SQL ddl脚本。我们遇到了数据类型不一致的问题。

所以你必须确保数据类型总是匹配。

我想最好的做法是准确地镜像你在开发中使用相同的SQL脚本来创建表格。