Hibernate построение dbmodel требует времени, если количество ключей в столбце jsonb увеличивается

У меня есть одна таблица с 7 столбцами jsonb и 13 простыми столбцами. 2 из столбцов jsonb имеют около 15 ключей, каждый из которых имеет составные значения типов данных. Прямо сейчас количество строк составляет около 15 тыс. Когда я выбираю * в postgresql , я получаю результаты в среднем 2 секунды.

Но когда я запрашиваю то же самое в своем приложении Hibernate с весенней загрузкой, я получаю результаты в среднем примерно 40 секунд. Я просто использую метод JpaSpecificationExecutor.findAll(Specification spec, Pageable pageable) для получения результатов.

Если я уберу эти столбцы, я смогу получить результаты за 3 секунды.

Что я должен сделать, чтобы увеличить производительность в моем приложении.

Вот структура одного из тяжелых столбцов jsonb

`String userProfileUrl;
List<String> groupAsssociated;
Double rate;
String code;
LocalDateTime lastLoginTime;
//Product is an Enum here with 3 key value pairs
Map<Product, LocalDateTime> lastTxnTime;
Map<String, Double> usageLimit;
Double dailySmsLimit;
//DocumentInfo here is a separate class with4 keys each having String //values
List<DocumentInfo> documents;
Map<String, String> fees;
String grade;
Map<DocumentInfo, DeliveryInfo> deptInfo;
Boolean disableUser;
//ParentUserInfo is a separate class with 5 keys each having String values
List<ParentUserInfo> parentInfo;`

person Neha Arora    schedule 23.01.2020    source источник


Ответы (1)


Нужны дополнительные сведения о том, как вы сопоставляете столбцы jsonb. Если вы используете пользовательские типы гибернации, такие как https://github.com/vladmihalcea/hibernate-types, есть некоторые накладные расходы из-за преобразования строк json в целевой объект.

person Amit Mendapara    schedule 23.01.2020
comment
Я добавил модель данных одного из столбцов jsonb в заданный вопрос. - person Neha Arora; 23.01.2020
comment
Это не ясно. Предоставьте код класса сущности (если он не настоящий, попробуйте что-то подобное) со всеми аннотациями, которые вы использовали в полях jsonb. - person Amit Mendapara; 23.01.2020