问题 如何验证针对数据库的Hibernate映射


如何检查Hibernate映射配置是否与数据库匹配?在开始执行更新和查询之前,我想知道我是否使用了错误版本的hibernate映射,然后失败了。

我有许多已经使用Hibernate注释映射的类。我也有相应的数据库连接。现在我想检查Hibernate映射是否与数据库匹配。

我想检查至少以下事项:

  • Hibernate配置中的所有映射表都在数据库中具有相应的对象(例如表或视图)
  • 数据库中存在所有映射的字段
  • 所有映射字段都有正确的类型

我更喜欢我不必对映射表执行查询,最好是检查仅基于数据库元数据。


4248
2018-01-22 10:36


起源



答案:


Hibernate配置文档

hibernate.hbm2ddl.auto

创建SessionFactory时,自动验证或将架构DDL导出到数据库。使用create-drop,当SessionFactory显式关闭时,将删除数据库模式。

例如验证|更新|创建|创建降

所以,你可以设置它 validate 它将验证您的hibernate映射中的所有内容是否都存在于数据库中。如果你把它设置为 update,然后每次添加映射的类或属性时,将更新基础数据库模式以反映该更改。

您还有一个命令行工具 - SchemaUpdate工具


16
2018-01-22 10:42



我正在寻找的东西。但是我可以用编程方式执行API吗? - Juha Syrjälä
您可以以编程方式执行它。编写一个小程序,创建一个启用了“验证”的SessionFactory。 - duffymo
是的,有一个命令行工具 - 我把它添加到我的答案。或者最好做duffymo建议的。 - Bozho


答案:


Hibernate配置文档

hibernate.hbm2ddl.auto

创建SessionFactory时,自动验证或将架构DDL导出到数据库。使用create-drop,当SessionFactory显式关闭时,将删除数据库模式。

例如验证|更新|创建|创建降

所以,你可以设置它 validate 它将验证您的hibernate映射中的所有内容是否都存在于数据库中。如果你把它设置为 update,然后每次添加映射的类或属性时,将更新基础数据库模式以反映该更改。

您还有一个命令行工具 - SchemaUpdate工具


16
2018-01-22 10:42



我正在寻找的东西。但是我可以用编程方式执行API吗? - Juha Syrjälä
您可以以编程方式执行它。编写一个小程序,创建一个启用了“验证”的SessionFactory。 - duffymo
是的,有一个命令行工具 - 我把它添加到我的答案。或者最好做duffymo建议的。 - Bozho