0
未来を返すが、私は次のような問題がありました私のリポジトリを非同期リポジトリとして実装し、それをテストする方法は? ExecutorServiceの で呼び出し可能としてリポジトリ 2.実行リポジトリ法から 1.リターン・フューチャーズ:より良い性能を持ってアプローチ春データJPA私は私のエンティティを非同期に保存し、結果の未来を返すようにしようとした
?
未来を返すが、私は次のような問題がありました私のリポジトリを非同期リポジトリとして実装し、それをテストする方法は? ExecutorServiceの で呼び出し可能としてリポジトリ 2.実行リポジトリ法から 1.リターン・フューチャーズ:より良い性能を持ってアプローチ春データJPA私は私のエンティティを非同期に保存し、結果の未来を返すようにしようとした
?
@Async
を使用すると、リポジトリコードは独自のトランザクション内で別のスレッドで実行されます。元のトランザクションはコミットされていないため、変更内容(つまり挿入されたエンティティ)が表示されず、したがってnull
という結果が表示されます。
したがって、動作させるには、最初のトランザクションをコミットする必要があります。
パフォーマンスについての2番目の質問について(次回は別の質問をしてください):マルチスレッドコードのパフォーマンスは、本当に唯一有益な方法です。試してみてください。しかし、実行をスケジュールする方法が、スレッドプールや接続プールのサイズよりもパフォーマンスに大きな影響を与える場合、私は驚くでしょう。