1. ホーム

[解決済み】混乱中。JPAとHibernateでの@NotNullと@Column(nullable = false)の比較。

2022-04-07 12:09:18

質問

  1. のフィールド/ゲッターに表示される場合、そのフィールド/ゲッターは @Entity この2つの違いは何ですか?(私は、エンティティの永続化を ハイバーネート ).

  2. それぞれどのようなフレームワークや仕様に属していますか?

  3. @NotNull の中にあります。 javax.validation.constraints . その中で javax.validation.constraints.NotNull javadocには次のように書かれています。

    アノテーションされた要素はnullであってはならない

    しかし、これはデータベースにおける要素の表現について述べているわけではないので、なぜ制約を追加するのでしょうか? nullable=false をカラムに追加してください。

解決方法は?

@NotNull JSR 303 Bean Validation(ビーンバリデーション アノテーションです。データベース制約自体には関係ありません。しかし、HibernateはJSR 303の参照実装であるため、これらの制約をインテリジェントに拾い上げ、データベース制約に変換してくれるため、1つの値段で2つを手に入れることができるのです。 @Column(nullable = false) は、JPA方式でカラムが非NULLであることを宣言するものです。つまり、前者は検証のため、後者はデータベーススキーマの詳細を示すためのものです。Hibernateの検証アノテーションの助けを借りているに過ぎないのです。