Hibernate - 永続化前の正当性チェックAdvertisement永続化前の正当性チェック
永続オブジェクトを永続化する(データが格納されているオブジェクトをデータベースに登録する)前に正当性チェックを行う場合、Validatableインタフェースを実装することにより、validate()メソッドによる正当性チェックが自動実行される。
正当性チェックの結果が不正になる場合はorg.hibernate.classic.ValidationFailureメソッドをthrowするように実装を行う。 サンプルチェックを行う前の状態Client.java
EmpDto empDto = new EmpDto();
empDto.setSalary("-1");
Transaction trans = session.beginTransaction();
session.save(empDto);
trans.commit();
System.out.println("新規レコードが追加されました。");
結果 Hibernate: insert into Emp (name, salary, bonus, ar, id) values (?, ?, ?, ?, ?) 新規レコードが追加されました。 チェック処理を実装 EmpDto.java
import org.hibernate.classic.Validatable;
import org.hibernate.classic.ValidationFailure;
public class EmpDto implements Validatable{
// property, setter, getter
// ...
public void validate() throws ValidationFailure {
if(Long.parseLong(this.getSalary()) < 0){
throw new ValidationFailure("salary");
}
if(Long.parseLong(this.getBonus()) < 0){
throw new ValidationFailure("bonus");
}
}
}
Client.java
EmpDto empDto = new EmpDto();
empDto.setSalary("-1");
Transaction trans = session.beginTransaction();
session.save(empDto);
trans.commit();
System.out.println("新規レコードが追加されました。");
結果
org.hibernate.classic.ValidationFailure: salary
at dto.EmpDto.validate(EmpDto.java:100)
例外が発生した。
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |