我最近开始学习休眠方式,但有以下疑问

时间:2018-11-15 17:03:59

标签: java hibernate jdbc frameworks relational-database

我最近开始学习冬眠,我有以下疑问

如果我错了,请纠正我。

  1. 如果将hbm2ddl.auto设置为 create ,则每当hibernate尝试与任何表进行交互时,该表将首先被删除。

  2. 因为休眠会在每次与表进行交互时删除一个表,所以如果我想更新记录,则无法将hbm2ddl值配置为create。

2 个答案:

答案 0 :(得分:0)

每次休眠与之交互时,都不会删除并重新创建表-初始化SessionFactory时会删除并重新创建表。这通常意味着您的应用程序启动。因此,如果您要在每次运行应用程序时都从一个干净的数据库开始的地方进行一些测试,则将hbm2ddl.auto设置为“ create”将是合理的。

有关更多信息,请参见community documentationthis previous question

答案 1 :(得分:0)

如果将值配置为create,则可以更新记录,但是当应用程序关闭时,将重新启动它,所有更改将消失。 因此实际上在这种情况下最好使用update。

在更新的情况下,它仅更新架构,您可以定义一些架构sql文件并在数据库端使用它,只需将hbm2ddlauto配置为更新即可。

以下是hbm2.ddlauto的可能值:

  • 验证:验证架构,不对数据库进行任何更改。

  • 更新:更新架构。

  • create:创建架构,破坏先前的数据。

  • create-drop:在关闭SessionFactory时删除架构    明确地,通常是在应用程序停止时。