それは絶対に正しい行動です。
not-null
属性には2つの意味があります:
- スキーマエクスポートツールのサポート
- 実行時にエンティティを確認します(つまり、データベースの列設定を確認しません)
5.1を参照してください。マッピング宣言 、抽出:
そして
したがって、クライアントがコードを実行すると、次のことが試行されます。
getHibernateTemplate().saveOrUpdate(myEntity);
myEntity
not-null="true"
として設定された一部のプロパティがありません ランタイム例外をスローするのは正しいです。テスト環境では、ほとんどの場合、プロパティを someに設定します。 null値ではありません。
そして利点もあります。 DBとアプリは緩く結合されています。そのため、必要に応じて、DBに触れずに、アプリ側でより多くの制約を設定できます(たとえば、許可されていません)