[hibernate-dev] Fail fast feature for Hibernate Validator
Emmanuel Bernard
emmanuel at hibernate.org
Tue Oct 5 11:45:23 EDT 2010
oops reading Gunnar's answer, I'm probably answer the wrong question :)
On 5 oct. 2010, at 17:23, Emmanuel Bernard wrote:
> public doStuff(@Param("name") String name, @Param("command") Object command) {
> ...
> }
>
> On 5 oct. 2010, at 16:07, Hardy Ferentschik wrote:
>
>> Where exactly do you want to add the parameter? To the Validator.validateXYZ() methods?
>>
>>
>> On Tue, 05 Oct 2010 15:54:10 +0200, Gunnar Morling <gunnar.morling at googlemail.com> wrote:
>>
>>> Hi,
>>>
>>> a use case might be a data-centric application, where you for performance
>>> reasons don't want to validate graphs completely once a failure occured, but
>>> don't want to face the user with single validation errors one after the
>>> other either.
>>>
>>> Specifying the validation order would surely be useful. But I wouldn't tie
>>> these things together. I suggest to introduce a numeric parameter and for a
>>> start either make clear that the validation order is not specified or only
>>> support values 0 (don't stop on first error) and 1 (= failFast). Later on,
>>> if validation order is spec'd, other values than these could easily be
>>> supported. If we now introduce a boolean parameter, the API would be
>>> somewhat "polluted" if we come up with a numeric parameter later on. Then we
>>> either had two parameters (leaving space for inconsistent configurations) or
>>> had to remove the boolean parameter again.
>>>
>>> Gunnar
>>>
>>>
>>> 2010/10/4 Emmanuel Bernard <emmanuel at hibernate.org>
>>>
>>>> Ive been toying with the number idea while talking with Max.
>>>> Im not sure what use case that solves provided the highly unpredictable
>>>> nature of what's get returned.
>>>>
>>>> It might be more useful and get a usecase if we spec what gets returned
>>>> roughly. Like deep-last algorithm etc.
>>>>
>>>>
>>>>
>>>> On 4 oct. 2010, at 22:17, Gunnar Morling <gunnar.morling at googlemail.com>
>>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I like the idea. Emmanuel's performance test showed an execution time per
>>>> validation of 11 vs. 74 ms on my system, so there seems to be some
>>>> potential. Instead of having a "failFast" flag one could also introduce a
>>>> numeric parameter to control, when validation should stop. A value of "1"
>>>> would be equal to the flag being true, but one could also decide to stop
>>>> just after 3 validation errors for instance.
>>>>
>>>> Gunnar
>>>>
>>>>
>>>> 2010/10/4 Emmanuel Bernard < <emmanuel at hibernate.org>
>>>> emmanuel at hibernate.org>
>>>>
>>>>> That or slowish validations.
>>>>>
>>>>> One typical use case is that:
>>>>>
>>>>> if ( validator.validate(customer, StraightToValidationScreen.class).size()
>>>>>> 0 ) {
>>>>> //manual process
>>>>> }
>>>>> else {
>>>>> //automatic process
>>>>> }
>>>>>
>>>>> BTW, I've committed a non scientific perf test that shows an average of 5x
>>>>> perf improvement on an object graph of 5 object (one master and 4 children)
>>>>> and 4 constraints on A and 3 on B. Around 22ms vs 120 ms. (log4j logs set to
>>>>> ERROR). The perf change is visible even on smallish graphs.
>>>>>
>>>>> It can be worthwhile.
>>>>>
>>>>> On 4 oct. 2010, at 16:20, Hardy Ferentschik wrote:
>>>>>
>>>>>> What would be the usecase? Saving time in large object graphs where I am
>>>>> only interested in whether there is a
>>>>>> failure at all? You really need LARGE object graphs to make this worth
>>>>> while.
>>>>>>
>>>>>>
>>>>>> On Mon, 04 Oct 2010 15:45:34 +0200, Emmanuel Bernard <<emmanuel at hibernate.org>
>>>>> emmanuel at hibernate.org> wrote:
>>>>>>
>>>>>>>
>>>>> <http://github.com/emmanuelbernard/hibernate-validator/commits/failFast>
>>>>> http://github.com/emmanuelbernard/hibernate-validator/commits/failFast
>>>>>>>
>>>>>>> What do you guys think?
>>>>>>>
>>>>>>> The idea is to stop a the first failure.
>>>>>>> You can enable that :
>>>>>>> - by property
>>>>>>> - at config time
>>>>>>> - when the Validator is created
>>>>>>>
>>>>>>> Look at
>>>>>>>
>>>>> <http://github.com/emmanuelbernard/hibernate-validator/blob/failFast/hibernate-validator/src/test/java/org/hibernate/validator/test/engine/failFast/FailFastTest.java>
>>>>> http://github.com/emmanuelbernard/hibernate-validator/blob/failFast/hibernate-validator/src/test/java/org/hibernate/validator/test/engine/failFast/FailFastTest.java
>>>>>>> for code examples.
>>>>>>>
>>>>>>> Emmanuel
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> hibernate-dev mailing list
>>>>> <hibernate-dev at lists.jboss.org>hibernate-dev at lists.jboss.org
>>>>> <https://lists.jboss.org/mailman/listinfo/hibernate-dev>
>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>>>
>>>>
>>>>
>>
>
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
More information about the hibernate-dev
mailing list