libro
初心者のためのJava Persistence API入門

Bean Validatorによるバリデーション (2/6)

作成:2017-10-28 10:18
更新:2017-10-28 10:18

■エンティティの設定

Bean Validatorを利用する場合、大きく2つの場所にコードを用意する必要があります。1つは、エンティティクラスで、ここにそれぞれのフィールドごとに設定するバリデーションルールの指定を行います。そして、実際にエンティティを保存するような処理の部分(サーブレットなど)に、バリデーションをチェックするための処理を用意します。

まず、エンティティクラス側の記述から説明しましょう。エンティティクラスでは、値を保管するためのフィールドに、バリデーションルールのアノテーションを付けることでルール設定を行います。

これは、具体的な例を見たほうがわかりやすいでしょう。下のリストは、MyDataEntityクラスにバリデーションを設定したものです。ここでは、以下のようなアノテーションが追加されています。
@NotEmpty
private String name;

nameには、@NotEmptyが設定されています。これは「空の値を禁止する」というバリデーションルールです。これを指定することで、ここには必ず何らかの値を用意しなければいけなくなります。空の文字列などは禁止です。
@NotEmpty
@Email
private String mail;

mailには、@NotEmptyの他に、@Emailというアノテーションが付けられています。これは、メールアドレスの形式の値のみ許可するバリデーションルールです。これを付けると、メールアドレスの形式のテキストのみを受け付けるようになります。


■javax.validationとそれ以外のもの

この2つのアノテーションは、実は微妙に種類が違います。追記されるimport文を見て下さい。以下のようになっていますね。
import javax.validation.constraints.NotEmpty;
import org.hibernate.validator.constraints.Email;

@NotEmptyは、javax.validation.constraintsパッケージにあります。これは、標準的なBean Validatorの機能です。

これに対し、@Emailは、org.hibernate.validator.onstraintsパッケージです。これは、このプロジェクトで使っているBean Validatorの実装であるhibernate-validatorの機能なのです。バリデーションと一口にいっても、このように微妙な違いがあるのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

// ※以下のimportを追加
import javax.validation.constraints.NotEmpty;
import org.hibernate.validator.constraints.Email;

@Entity
public class MyDataEntity {

    @Id
    @GeneratedValue
    private Integer id;

    @NotEmpty
    private String name;

    @NotEmpty
    @Email
    private String mail;
    
    private String tel;
    private Date created = Calendar.getInstance().getTime();

    ……以下略……
※関連コンテンツ

「初心者のためのJava Persistence API入門」に戻る