4

株式市場からシンボルの現在の株価を取得する getStockQuote() 関数があります。

私の目標は、JTA トランザクション内で getStockQuote() への最初の呼び出しで株価をフェッチすることですが、同じトランザクション内の後続のすべての呼び出しで同じ株価を再利用することです (例: 新しい株価をフェッチしようとしません)。別のトランザクションが開始された場合、または別のトランザクションが同時に実行された場合、他のトランザクションが最初の呼び出しで独自の株価を取得することを期待します。

これは、トランザクション内の一貫性を確保するためです。トランザクション内のすべての計算が同じ株価に基づくようにします。

これは、データベースからデータベース行を 1 回だけフェッチし、キャッシュされた値をトランザクション内の同じデータベース行への後続のアクセスに使用するように JPA プロバイダーを構成する方法に似ています。

これを達成する方法についてのヒントはありますか?

4

2 に答える 2

0

これにはいくつかのテストが必要ですが、クォートをにバインドし、トランザクションのコミット後にクォートをバインド解除ThreadLocalするように Bean を実装することができると思います(したがって、一種のトランザクションスコープのコンテキストを実装します)。SessionSynchronizationThreadLocal

于 2010-05-17T22:30:55.413 に答える
0

トランザクション管理にSpringを使用することを検討してください.Springはすぐに使える機能を提供します:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html#tx-propagation

于 2010-05-17T22:46:11.560 に答える