我有一个getStockQuote()函数,它将从股票市场获得符号的当前股票报价。
我的目标是在JTA事务中,第一次调用getStockQuote()将获取股票报价,但同一交易中的所有后续调用将重复使用相同的股票报价(例如:它不会尝试获取新的引用)。如果另一个事务开始,或另一个事务同时运行,我希望另一个事务在第一次调用时获取自己的股票报价。
这是为了确保交易内的一致性 - 以便交易中的所有计算都基于相同的股票价格。
这类似于您可以将JPA提供程序配置为仅从数据库中获取一次数据库行,并使用缓存值进行事务中对同一数据库行的后续访问。
有没有人知道如何实现这一目标?
答案 0 :(得分:0)
这需要进行一些测试,但我认为您可以将引用绑定到ThreadLocal
并使您的bean实现SessionSynchronization
以在提交之后取消绑定ThreadLocal
的引用transaction(从而实现一种事务范围的上下文)。
答案 1 :(得分:0)
考虑使用spring进行事务管理,它提供了开箱即用的功能: