我发现自己需要在事务上使用post commit挂钩。我正在使用事件存储,并且需要保证在事务提交之前不会发布事件,因为事件处理程序可能需要先前事务中的数据。
我正在使用带有JPA模块的Guice来连接所有内容。我想通过从guice-persist模块中更改JpaLocalTxnInterceptor
可以很容易地添加一个钩子,我可以停止使用@Transactional
并手动执行但是更喜欢隐藏此样板,是否有更好的解决方案?
答案 0 :(得分:0)
我的建议是添加自定义拦截器和自定义注释。您可以将现有的JpaLocalTxnInterceptor复制为。
其他解决方案是使用JTA并将DB和EventStore都包含在事务中。但是,分布式交易再次成为他们自己的问题。
顺便说一下。 Guice持续存在并不会使JTA变得更糟糕。 Onami Persist将是另一种选择。