Infinispan 交易与@Transactional

Infinispan transactions with @Transactional

我正在考虑使用 Infinispan 替代我在 wildfly 中的关系数据库。

CDI 支持 @Transactional 注释。通常,我只为 JPA 相关事务将 @Transactional 放在方法级别。 infinispan 会使用 @Transactional(及其 Java 交易 API)。还是 @Transactional 仅适用于 JPA?

是的,Infinispan支持JTA,CDI也支持JTA,所以当CDI的事务拦截器执行时,它会把事务管理器并创建交易。如果你的 Infinispan 缓存已经配置了这个事务管理器,资源将 enlisted/syncrhonized 到事务。

您需要像文档中所说的那样为 Infinispan 配置 TransactionManager(Infinispan 附带了几个可以提供帮助的事务管理器查找 类)。有关此的更多信息:(Infinispan doc reference).

请记住,如果您希望在同一个事务中混合多个资源(如数据库和缓存),并且您希望在单个事务中执行此操作,Infinispan 也支持分布式事务,因此您可以配置 XA 事务(在这种情况下,您的数据库或其他资源也必须支持 XA)。有关此的更多信息:Infinispan doc reference 2 and Infinispan doc reference 3