6

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);



    }


}
4

2 に答える 2