Как оптимизировать сложный рабочий процесс с расценками на страхование с помощью нескольких зависимых проверок и вызововJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как оптимизировать сложный рабочий процесс с расценками на страхование с помощью нескольких зависимых проверок и вызовов

Сообщение Anonymous »

Я работаю над улучшением рабочего процесса расчета котировок по страхованию жизни с помощью Spring Boot 3 с JPA/Hibernate.

Рабочий процесс включает в себя несколько зависимых этапов:
  • Проверка соответствия клиента критериям участия
  • Продукт → План → Загрузка иерархии участников
  • Премии на основе правил расчет
  • Загрузка страховых взносов на основе возраста
  • Перестрахование или проверка лимитов
  • Окончательное агрегирование страховых взносов
Когда задействовано несколько участников и наборов правил, рабочий процесс приводит к нескольким цепочкам вызовов службы и повторным поискам в базе данных. Это приводит к медленному реагированию API котировок (~ 1,4–2 секунды).
Пример структуры объекта:

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

@Entity
public class Product {
@Id
private Long id;

@OneToMany(mappedBy="product")
private List
 plans;
}

@Entity
public class Plan {
@Id
private Long id;

@ManyToOne
private Product product;

@OneToMany(mappedBy="plan")
private List riders;
}

@Entity
public class Rider {
@Id
private Long id;

@ManyToOne
private Plan plan;
}
Репозиторий с использованием @EntityGraph:

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

@Repository
public interface ProductRepository extends JpaRepository
 {

@EntityGraph(attributePaths = {"plans", "plans.riders"})
Optional findById(Long id);
}
Хотя я использую @EntityGraph, Hibernate выполняет несколько SQL-запросов для вложенных коллекций планов → райдеров (проблема N+1). Это способствует медленному времени ответа API (~ 1,4–2 секунды для котировок с несколькими участниками).
Вместо этого я хочу, чтобы Hibernate извлекал всю иерархию в одном запросе, сокращая время ответа API котировок до менее 800 мс, сохраняя при этом сопоставления сущностей JPA.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ependent-v
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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