java我最近开始学习hibernate,我有以下疑问
我最近开始学习hibernate,我有以下疑问
如果我错了,请纠正我
如果是hbm2ddl。auto设置为create,每次hibernate尝试与任何表交互时,该表都将首先被删除
因为hibernate每次与表交互时都会删除一个表,所以如果我想更新记录,就不能将hbm2ddl值配置为create
你可以在下面搜索框中键入要查询的问题!
我最近开始学习hibernate,我有以下疑问
如果我错了,请纠正我
如果是hbm2ddl。auto设置为create,每次hibernate尝试与任何表交互时,该表都将首先被删除
因为hibernate每次与表交互时都会删除一个表,所以如果我想更新记录,就不能将hbm2ddl值配置为create
# 1 楼答案
如果将value配置为create,则可以更新记录,但当应用程序关闭并重新启动时,所有更改都将消失。 所以实际上,在这种情况下,最好使用更新
在update-it-only-updates模式的情况下,您可以定义一些模式sql文件并在数据库端使用它,只需将HBM2DDLDLAUTO配置为update
以下是hbm2的可能值。ddlauto:
验证:验证模式,不更改数据库
更新:更新模式
创建:创建模式,销毁以前的数据
create drop:在SessionFactory关闭时删除架构 显式地,通常在应用程序停止时
# 2 楼答案
不是每次hibernate与表交互时都会删除并重新创建该表,而是在初始化SessionFactory时删除并重新创建该表。这通常意味着应用程序启动时。因此,如果要在每次应用程序运行时从一个干净的数据库开始进行一些测试,请设置hbm2ddl。自动“创建”是合理的
更多信息,请参见community documentation和this previous question