混乱: JPA と Hibernate での @NotNull と @Column(nullable = false) の相違点 質問する

混乱: JPA と Hibernate での @NotNull と @Column(nullable = false) の相違点 質問する
  1. これらが のフィールド/ゲッターに表示される場合@Entity、それらの違いは何ですか? (エンティティをHibernateを通じて永続化します)。

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

  3. @NotNullは にありますjavax.validation.constraints。Javadocにはjavax.validation.constraints.NotNullこう書かれています

    注釈付き要素は null であってはなりません

    しかし、データベース内の要素の表現については言及されていないので、なぜnullable=false列に制約を追加するのでしょうか?

ベストアンサー1

@NotNullは、JSR 303 Bean Validationアノテーションです。データベース制約自体とは関係ありません。ただし、Hibernate は JSR 303 のリファレンス実装であるため、これらの制約をインテリジェントに取得し、データベース制約に変換します。つまり、1 つの価格で 2 つが得られます。は、@Column(nullable = false)列が null でないことを宣言する JPA の方法です。つまり、前者は検証用であり、後者はデータベース スキーマの詳細を示すためのものです。検証アノテーションに関して、Hibernate から追加の (そして歓迎すべき!) 支援を受けるだけです。

おすすめ記事