Hibernate Validation 6.0 ListValueExtractor.ExtractValues, похоже, имеет плохую производительность с большими спискамиJAVA

Программисты JAVA общаются здесь
Anonymous
Hibernate Validation 6.0 ListValueExtractor.ExtractValues, похоже, имеет плохую производительность с большими списками

Сообщение Anonymous »

Я использую проверку Hibernate 6.x. У меня есть поле в объекте, который я проверяю, в котором содержится список, список Doubles , например. Проблема, с которой я сталкиваюсь, заключается в том, что когда список очень большой, деградация производительности является существенной. Чтобы исследовать проблему, я реализовал проверку списков элементов в качестве пользовательского валидатора в списке, @ValidDoubles List
Пример объекта: < /p>

Код: Выделить всё

public class myDataObject {

private List doubles // List which can contain thousands of values

// Getters and Setters
}
Обновление
после дальнейшего профилирования и исследования я считаю, что проблема связана с отслеживанием сгибания, с которыми сталкиваются бобы, я уже проверяется при выполнении каскадного валидации, в частности,
. Интересно, что это второй дочерний объект, где время тратится, даже если они содержат относительно простые проверки. Интересно, настроил ли я неправильно валидатор или бобов, так как это кажется очень странным.

Код: Выделить всё







< /code>
validator vocation: < /p>
Set violations = validator.validate(input);
< /code>
Пример структуры объекта < /p>
public class InputObject {
@NotNull
String name;

@Valid
List firstChildren; // on average 10 objects but can be up to very large

// Getters and Setters
}

public class FirstChild {
@SomeCustomValidator // Not important
Integer someValue;

// 3 to 4 further fields with simple validators

@Valid
List secondChildren; // On average around 40 objects but can be very large

// Getters and Setters
}

public class SecondChild {
@NotBlank
String foo;

@NotBlank
String bar;

// Getters and Setters
}
< /code>
В заключение: < /p>

[*] Из профилировщика проблема заключается в каскадных подтверждениях, обнаруженных из аннотаций @valid < /code> в списках. валидация.
 Профилировщик показывает System.IdentityHashCode 
как метод, который принимает большую часть времени, затраченного на проверку.>

Подробнее здесь: https://stackoverflow.com/questions/661 ... e-poor-per

Вернуться в «JAVA»