2

我正在学习 JPA - Hibernate。

我正在关注这篇文章 在 Dog.java 中它被称为@Table(name = "dog"). 在persistence.xml我有以下

<property name="hibernate.hbm2ddl.auto" value="create"/>

这会在数据库中创建表狗吗?我还没有在数据库中创建表 Dog。因此,在生产环境中,这可能很危险。在这种情况下,理想值应该是什么 hibernate.hbm2ddl.auto

有什么建议么?

4

4 回答 4

4

这在所有意义上都是危险的,您的应用程序用户不应该拥有 DDL 权限(更改表、创建表)您的应用程序用户应该只执行 DML(SELECT、INSERT、UPDATE、DELETE 等)

于 2012-08-20T18:51:50.707 回答
2

是的,每次部署您的应用程序时它都会创建新表。更好地使用:

<property name="hibernate.hbm2ddl.auto" value="validate"/>

如果您已经有数据。

以下是可能的选项:

  • validate:验证模式,不更改数据库。
  • 更新:更新架构。
  • create:创建模式,销毁以前的数据(!)
  • create-drop:在会话结束时删除模式(!)
于 2012-08-20T18:48:44.547 回答
1

不要<property name="hibernate.hbm2ddl.auto" value="create"/>在生产中设置,因为每当你重新启动服务器时,所有的表都会被删除并重新创建。hibernate feature如果要从一个数据库迁移到另一个数据库,则可以使用此属性 ( )。

如果要设置,请<property name="hibernate.hbm2ddl.auto" value="update"/>在开发中设置(而不是在生产中)。如果您在pojo classes(注释)中进行了任何更改,这将更新架构。

还要检查:Hibernate: hbm2ddl.auto=update in production?

Hibernate hbm2ddl.auto 可能的值以及它们的作用?

于 2012-08-20T18:48:51.490 回答
1

在生产环境中将其设置为“无”。

于 2012-08-20T18:49:57.970 回答