我经常发现自己将@AppplicationScoped bean转换为SLSB bean,以便我可以使用@TransactionalAttribute。
创建自定义CDI拦截器来开始和结束可以在任何bean上使用的事务有什么好处呢?
答案 0 :(得分:0)
实际上已经在新的CDI规范中实现了@Transactional
与Java EE 7一起实现,因此您可以将它应用于应用程序中的所有Managed Beans,它的工作方式与{{1}相同。做了。查看documentation了解详情。
CDI与EJB
差异非常简单,如果您不需要调度,远程bean,异步行为或安全性等内容,请始终使用@TransactionalAttribute
。请参阅任何类型的教程,了解这些功能以及如何实现它们。另请注意,如果使用CDI
,那么应用程序中的每个类都将有效地转入CDI
,包括EJB bean。
答案 1 :(得分:0)
EJB将成为cdi容器提供的一组专用服务。
所以,要解决你的问题: 默认情况下,EJB能够处理某些事情:cdi dont:
所以,如果你只使用事务方面,那么cdi +拦截器或EJB之间没有太大的区别。
来源:http://www.adam-bien.com/roller/abien/entry/cdi_with_or_without_ejb