18

hibernate.hbm2ddl.auto = validateが実際にどのように機能するかに興味があり、包括的なドキュメントを見つけるのに苦労しています。

最近、本番システムがhttp://opensource.atlassian.com/projects/hibernate/browse/HHH-3532(Hibernateは署名ではなく名前の外部キーと一致するため、それらを再作成します)と休止状態の影響を受けることを発見しました。 .hbm2ddl.auto = updateは、次のリリースから削除されます。

hibernate.hbm2ddl.autoを完全に削除して、データベースを自分で管理できれば幸いです。ただし、すべての同僚がこの世界観を共有しているわけではなく、一部の同僚はhibernate.hbm2ddl.auto=validateに追加し直したいと考えています。

これが同じ問題にぶつかるのではないかと心配しており、この検証が実際にどのように機能するかについて、より多くのドキュメントを見つけることに興味があります。Hibernate Community Documentation(http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html)は、実際には値を参照しているだけです。

誰かが良いドキュメントポインタ、または本番システムで検証を使用した実際の経験を持っていますか?

4

1 に答える 1

24

これが同じ問題にぶつかるのではないかと心配しており、この検証が実際にどのように機能するかについて、より多くのドキュメントを見つけることに興味があります。

私の意見では、最良のドキュメントは、何が起こっているのかを正確に確認できるソースコードです。関連する方法はorg.hibernate.tool.hbm2ddl.SchemaValidator#validate()です。

私はコードをすばやく調べましたが、データベース内の外部キーを検証するとは思いません。テーブル、列、IDジェネレーターの存在をチェックしますが、外部キーはチェックしません。ペットデータベースに対するテストでは、この動作が確認されているようです。FK制約を削除しても、スキーマの検証は中断されません(つまり、バリデーターは、参照整合性ではなく、アプリケーションを実行できるかどうかをチェックします)。SchemaValidator

さて、HHH-3532は修正済みとしてマークされています。新しいバージョンのHibernateにアップグレードしてみませんか、Hibernateのバージョンを変更するのが重すぎる場合は、HHH-3532のパッチを自分で適用してみませんか?

そうは言っても、は本番データベースの更新には使用せずhibernate.hbm2ddl.auto=update、変更スクリプトを使用します。しかし、はそれを使用hibernate.hbm2ddl.auto=validateし、それに満足しています。

于 2010-04-23T04:18:01.277 に答える