#multithreading #spring-data-jpa #spring-transactions
Вопрос:
Я использую springboot Jpa и пометил метод как транзакционный. В транзакционном методе имеется несколько вставок, которые не зависят друг от друга.
Я пытаюсь повысить производительность, используя несколько потоков внутри транзакционного метода, но транзакционное поведение теряется, когда я это сделал. Не могли бы вы, пожалуйста, предложить способ добиться такого поведения.
@Transactional
methodA(){
repo1.save(A)
repo2.save(B)
repo3.save(C)
repo4.save(D)
}
Я хочу запустить эти операции сохранения в разных потоках, но в одной транзакции.
Комментарии:
1. Используйте TransactionTemplate для программного управления tx. Но многопоточность, скорее всего, не улучшит производительность в этом сценарии.
2. Можете ли вы предложить что-то, что может помочь в повышении производительности
3. В основном это касается архитектуры, и для этого мне нужно задать более конкретные вопросы. И вам сначала нужно будет выяснить, что именно замедляет его.
4. Во время вызовов вставки требуется время, только эта часть приложения выполняется в одном потоке. Здесь, выше, как я уже упоминал, 4 репозитория, но на самом деле существует 15 операторов вставки, поэтому они вставляют один за другим и замедляют работу приложения.
5. Что вы имеете в виду, говоря, что он работает в одном потоке? Это вызывается вашим контроллером->Службой? Затем он вызывается пользовательскими потоками. И 15 операторов вставки должны завершиться быстро, вероятно, менее чем за полсекунды..