У меня 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 на сервере.