我正在学习JPA - Hibernate。
我关注此article
在Dog.java中,它被称为@Table(name = "dog")
。
在persistence.xml
我有以下
<property name="hibernate.hbm2ddl.auto" value="create"/>
这会在数据库中创建表狗吗?我没有在数据库中创建表Dog。因此,在生产环境中,这可能是危险的。在这种情况下,hibernate.hbm2ddl.auto
有什么建议吗?
答案 0 :(得分:4)
从各方面来看都很危险,你的应用程序用户不应该拥有DDL权限(alter table,create tables)你的应用程序用户应该只做DML(SELECT,INSERT,UPDATE,DELETE等)
答案 1 :(得分:2)
是的,它确实会创建新表部署应用的每个时间。更好用:
<property name="hibernate.hbm2ddl.auto" value="validate"/>
如果您已有数据。
以下是可能的选项:
答案 2 :(得分:1)
不要在生产中设置<property name="hibernate.hbm2ddl.auto" value="create"/>
,因为每次重新启动服务器时,所有表都将被删除并重新创建。如果要从一个数据库迁移到另一个数据库,则可以使用此属性(hibernate feature
)。
如果要设置,请在开发中设置<property name="hibernate.hbm2ddl.auto" value="update"/>
(不在生产中)。如果您在pojo classes
(注释)中进行了任何更改,则会更新架构。
答案 3 :(得分:1)
在生产环境中将其设置为“none”。