对EJB使用 @Transactional 是否可以?使用 @TransactionAttribute 之间有什么区别吗?
我在Difference between @Transactional and @TransactionAttribute找到了@Transactional用于POJO。我在Wildfly中意外地将它用于EJB,并且没有错误。我想知道行为是否相同或者是否存在一些差异。或者@Transactional可能会被忽略,并且会使用@TransactionAttribute的默认级别?我在规范中搜索但没有发现任何帮助。
编辑:
正如@kostja所说,不清楚提到的框架问题是什么。我的意思是来自CDI的@Transactional,而不是Spring。
答案 0 :(得分:5)
没有。根据EJB 3.2规范的第7.1节:
关联JTA事务拦截器是违法的(见[8]) 使用Enterprise JavaBeans。 EJB容器应该部署失败 这样的申请。[39]
[39]此限制可能会在本规范的未来版本中删除。
从容器实现的角度来看,CDI和EJB在不同的层运行(CDI代理包装EJB代理)。为了使这项工作更好,需要在两个容器之间进行更深入的集成,以便@Transactional
拦截器和EJB容器都不会尝试检查/更新事务上下文。