4

我有一个 getStockQuote() 函数,它将从股票市场获取一个符号的当前股票报价。

我的目标是在 JTA 事务中,第一次调用 getStockQuote() 将获取股票报价,但同一事务中的所有后续调用将重用相同的股票报价(例如:它不会尝试获取新报价)。如果一个不同的事务开始,或者另一个事务同时运行,我希望另一个事务在第一次调用时获取它自己的股票报价。

这是为了尽量确保交易内的一致性——以便交易内的所有计算都基于相同的股票价格。

这类似于您可以将 JPA 提供程序配置为仅从数据库中获取数据库行一次,并使用缓存的值在事务中对同一数据库行进行后续访问。

有没有人有关于如何实现这一点的提示?

4

2 回答 2

0

这将需要一些测试,但我认为您可以将引用绑定到 aThreadLocal并让您的 bean 实现SessionSynchronization以在事务提交之后解除引用的绑定ThreadLocal(从而实现一种事务范围的上下文)。

于 2010-05-17T22:30:55.413 回答
0

考虑使用 spring 进行事务管理,它提供了开箱即用的功能:

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

于 2010-05-17T22:46:11.560 回答