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
我正在考虑使用 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