如何将数据附加到JTA事务? (或唯一识别它)

时间:2010-05-17 22:28:21

标签: java transactions jta

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

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

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

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

有没有人知道如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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