2010-01-22 60 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