Проблема производительности для отображения нескольких прав в ассоциации OneToMany - PullRequest
0 голосов
/ 05 июня 2018

У меня 3 субъекта - 1. сделка 2. транш 3. ордерная сделка имеет отношения один-ко-многим с траншем, а также отношения один-ко-многим с ордером.т.е. 1 сделка может иметь много траншей, а 1 транш может иметь много ордеров.

Для этого я создал 3 сущности.

1.Deal

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "deal_id")
private List<Tranche> deals = new ArrayList<Tranche>();

2. Транш

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "tranche_id")
private List<Order> orders = new ArrayList<Order>();

Моя частая операция - вставка в базу данных.Я использую JpaRepositories's save() метод для вставки данных.

@Repository
public interface ReportRepo extends JpaRepository<Deal, Long>{

}

Не переопределил метод save (), просто использую как есть.

Я создаю сделкуобъект, содержащий детали траншей и ордеров в нем, а затем сохраняющий этот объект в базе данных с использованием репозитория.

В результате создается 3 таблицы в базе данных и вставляются данные.

Всеработает нормально, единственная проблема - это проблема производительности.Выполнение кода занимает слишком много времени.

Например: у меня 27 deals, 49 tranches and 4000 orders.Чтобы сохранить эту большую часть данных, я делаю 27 DB save calls (каждый из объекта Deal), но для выполнения этого кода требуется почти 15 мин. , что слишком много времени.

Пожалуйста, предложите об этом.Я также могу изменить таблицы базы данных, если производительность значительно улучшится.В будущем могут появиться требования выбора / обновления.Использование сервера Oracle на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...