javax.validation.Validation を使用して jpa エンティティを検証しています。私は常に同じエンティティに対して検証しています。
すべての検証に 1 つの Validator を使用する方がよいのか、検証するたびに新しい Validator をインスタンス化する方がよいのかを知りたいです。
また、使用するたびに新しいバリデーターをインスタンス化するのは、計算の面でどれくらいコストがかかりますか?
オプション 1: 検証ごとに新しいバリデーターをインスタンス化します。
public class Validator
{
public static void main(String[] args)
{
//Validation1
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Entity entityToValidate = new Entity();
entityToValidate.setEmail("NOT_A_VALID_EMAIL@@@tomanyat.com");
Set<ConstraintViolation<T>> constraintViolations = validator.validate(entityToValidate);
//Validation2 (Note that validator has been created yet a second time !! )
Validator validator2 = factory.getValidator();
Entity entityToValidate2 = new Entity();
entityToValidate.setEmail("NOT_A_VALID_EMAIL@@@tomanyat.com");
Set<ConstraintViolation<T>> constraintViolations2 = validator2.validate(entityToValidate);
}
}
オプション 2: すべての検証に対して単一のバリデーター。
public class Validator
{
public static void main(String[] args)
{
//Validator created only once
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
//Validation #1
Entity entityToValidate = new Entity();
entityToValidate.setEmail("NOT_A_VALID_EMAIL@@@tomanyat.com");
Set<ConstraintViolation<T>> constraintViolations = validator.validate(entityToValidate);
//Validation #2
Entity entityToValidate2 = new Entity();
entityToValidate.setEmail("NOT_A_VALID_EMAIL@@@tomanyat.com");
Set<ConstraintViolation<T>> constraintViolations2 = validator .validate(entityToValidate);
}
}