で注釈が付けられたエンティティがあり@Entity
ます。スクリプト
の作成を担当している場合、キーワードを使用してデータベースに列を作成できる時期を指定する必要があるのはなぜですか? フィールドでこのプロパティを使用する利点を示す例はありますか?CREATE TABLE
@Column( nullable = false )
NOT NULL
3 に答える
特にJSR303 @NotNull アノテーションも追加する場合は、エラー メッセージとエラー処理が改善されます。
列を作成してもNOT NULL
JPAにnullではないことを伝えない場合、JPAはnull値がOKであると想定します。オブジェクトを null で保存しようとすると、それが DB に送信され、DB レベルのエラーが発生します。これにより、データベース内のログ スパムが増加し、どのテーブルのどの列が問題であったかをエラーから判断するのがはるかに難しくなり、それらを JPA 名にマップし直すことはできません。
それらに null 以外の注釈を付けると、JPA は保存する前に例外をスローし、DB ログのスパムを回避し、通常はより適切なエラーを提供します。特に、JPA プロバイダーが JSR303 をサポートし、内部的に変換するか、追加nullable=false
した場合、カスタマイズ可能なテンプレートとともに、どのオブジェクトのどのフィールドがどのような理由で拒否されたかを正確に確認するために調べることができるデータ構造が提供されます。エラーメッセージ。@NotNull
@NotNull
そのため、フィールドについて JPA に通知する必要がありNOT NULL
ます。これにより、DB スキーマを読まなくても、コードに取り組んでいる他の人が理解しやすくなります。
あなたの場合、実際の利益はないかもしれませんが、
- jpa プロバイダーを使用してスキーマを生成している場合 (maven または hbm2ddl.auto などの自動生成を介して)、それは重要です。
- エンティティ モデルに対してスキーマを検証するように jpa プロバイダーを構成する場合は、同期する必要があります。