我正在考虑使用Infinispan代替我的Wildfly关系数据库。
CDI支持@Transactional
批注。通常,我只将@Transactional
放在与JPA相关的事务的方法级别上。 infinispan将使用@Transactional
(及其Java事务API)。还是@Transactional
仅适用于JPA?
是,Infinispan支持JTA,CDI也支持JTA,因此,当CDI的交易拦截器执行时,它将使用交易管理器并创建交易。如果您的Infinispan缓存已配置此事务管理器,则该资源将被登记/同步到事务中。
您需要为Infinispan配置TransactionManager,如文档所述(Infinispan附带了几个可以帮助您的事务管理器查找类)。有关此的更多信息:(Infinispan doc reference)。
请注意,如果您希望在同一个事务中混合多个资源,例如数据库和缓存,并且希望在单个事务中进行此操作,那么Infinispan也支持分布式事务,因此您可以配置XA事务(在这种情况下,您的数据库或其他资源也必须支持XA。有关此的更多信息:Infinispan doc reference 2和Infinispan doc reference 3