带有Spring的EJB3

我已经明白,如果我在Spring上下文中使用EJB,我会得到所有相同的好处,就像我在“纯”EJB3环境中使用它一样,这是真的吗? 我用谷歌搜索,但找不到明确,明确的答案。

例如,假设我有一个会话bean来更新数据库中的某些表,并引发系统exception。 在“纯”EJB3环境中,事务将回滚。 如果我使用Spring @Autowire这个bean,那么Spring会像EJB3容器一样处理事务处理吗? 或者是什么? 它可能需要一些特定的配置还是完全“自动”?

我已经明白,如果我在Spring上下文中使用EJB,我会得到所有相同的好处,就像我在“纯”EJB3环境中使用它一样,这是真的吗?

您通常使用POJO + Spring EJB3。 我对“spring的EJB”的含义感到有点困惑……

POJO + Spring和EJB3现在非常接近,并且在声明式事务管理方面具有相同的function。

我不知道有关安全性的所有细节,但我会说这两种技术也非常相似。

实际上Spring和EJB3都依赖于其他规范。 重要的是:JPA( 持久性 ),JTA(分布式事务),JMS( 消息传递 ),JDBC( 数据源 )。 两个技术堆栈中存在良好的支持。

这两种技术都变得非常灵活,您可以选择使用或不使用的技术。 因此,您可以在应用程序中使用EJB3。 服务器,非常轻。 或者您可以将Spring与所有模块一起使用,这些模块几乎与完整的应用程序一样重。 服务器。

我认为EJB3模型仍然有点丰富,包括远程处理,有状态会话bean(SFSB),容器管理事务和扩展持久化上下文。 此外,根据应用程序可能支持群集。 服务器。 但这些是很少使用的高级function(IMO需要专业知识)。

请参阅EJB3与Spring

spring有许多function,其中一个是事务管理 ,它使用了所有不同orm实现(jpa,raw hibernate,jdbc,jdo等)的通用抽象。 默认行为是在事务方法中,运行时exception导致回滚(这可能是您想要的),但您也可以微调回滚规则 。

但是,这些都不需要EJB。 如果你不使用EJB(无状态,有状态,mdbs),那么JPA就足够了,并且spring jpa支持非常好。 在90%的情况下,spring将提供您需要的所有内容而无需EJB。


编辑:

阅读有关Spring EJB集成的内容

您可以拥有Spring句柄事务并相应地回滚。 您必须将其配置为执行此操作,但对于EJB也是如此。

生活中没有任何东西真正“自动”。 你必须告诉代码你想要的东西。

真正的问题是:为什么你认为你需要EJB和Spring? 您可以使用Spring的POJO完成使用EJB可以执行的任何操作。 什么是EJB在这里买你?

我得到了非常好的答案,链接到文章,从那些我编译我的理解是的,会话bean以相同的方式工作,无论它们是否与Spring一起使用,只要bean在Spring上下文中定义 。 还找到了一篇关于这个的好的,简单的文章: http : //java.dzone.com/articles/ejb-30-and-spring-25

但是我不能只接受一个答案,因为对我来说他们都同样好,但他们都没有完全相同:)可能是我的问题不够明确,开始……

(有人建议我发布这个作为我自己问题的答案)