2010-01-22 63 views
10

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

我有一堆已经映射了Hibernate注释的类。我也有连接到相应的数据库。现在我想检查Hibernate映射是否匹配数据库。

我想检查至少以下操作:

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

我宁愿不必执行对映射表的查询,最好检查完全基于数据库元数据。

回答

14

Hibernate configuration docs

hibernate.hbm2ddl.auto

创建SessionFactory的时候会自动验证或出口模式的DDL到数据库。使用create-drop,当SessionFactory显式关闭时,数据库模式将被删除。

例如验证|更新|创建|创建 - 删除

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

你也有一个命令行工具 - SchemaUpdate

+0

类似的东西我在找。但是API中有什么可以以编程方式执行吗? – 2010-01-22 10:49:17

+1

您可以通过编程方式执行它。编写一个小程序,创建一个打开“验证”的SessionFactory。 – duffymo 2010-01-22 10:55:54

+0

是的,有一个命令行工具 - 我将它添加到我的答案。或者最好做duffymo建议的事情。 – Bozho 2010-01-22 10:59:48