HIbernate创建数据库表

时间:2012-08-20 18:43:51

标签: java hibernate

我正在学习JPA - Hibernate。

我关注此article 在Dog.java中,它被称为@Table(name = "dog")。  在persistence.xml我有以下

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

这会在数据库中创建表狗吗?我没有在数据库中创建表Dog。因此,在生产环境中,这可能是危险的。在这种情况下,hibernate.hbm2ddl.auto

的理想值应该是什么?

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

从各方面来看都很危险,你的应用程序用户不应该拥有DDL权限(alter table,create tables)你的应用程序用户应该只做DML(SELECT,INSERT,UPDATE,DELETE等)

答案 1 :(得分:2)

是的,它确实会创建新表部署应用的每个时间。更好用:

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

如果您已有数据。

以下是可能的选项:

  • validate:验证架构,不对数据库进行任何更改。
  • 更新:更新架构。
  • create:创建架构,销毁以前的数据(!)
  • create-drop:在会话结束时删除架构(!)

答案 2 :(得分: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 possible values and what they do?

答案 3 :(得分:1)

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