java - EJB3 与 Spring

标签 java spring transactions ejb-3.0 autowired

我了解到,如果我在 Spring 上下文中使用 EJB,我将获得与在“纯”EJB3 环境中使用它相同的好处,这是真的吗?我用谷歌搜索过,但找不到明确的答案。

例如,假设我有一个 session bean,它更新数据库中的某些表,并且它会引发系统异常。在“纯”EJB3 环境中,事务会回滚。例如,如果我使用 Spring @Autowire 这个 bean,Spring 是否以与 EJB3 容器相同的方式处理事务处理?或者是什么?它可能需要一些特定的配置还是完全“自动”?

最佳答案

I have understood that if I use EJB in Spring context, I get all the same benefits as if I was using it in "pure" EJB3 environment, is this true?

您通常使用 POJO + Spring EJB3。我对“Spring 中的 EJB”的含义有点困惑......

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

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

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

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

我认为 EJB3 模型仍然更丰富一些,包括远程处理、有状态 session Bean (SFSB)、容器管理的事务和扩展的持久性上下文等。加上根据应用程序可能支持的集群。服务器。但这些都是很少使用的高级功能(IMO 需要专业知识)。

参见EJB3 vs Spring

关于java - EJB3 与 Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2950070/

相关文章:

c# - .NET TransactionScope 和 MSDTC

Java 帮助,错误消息 "file not found"

java - java中使用正则表达式匹配多行文本

java - 如何在 Spring Boot 项目 : 上正确配置 Intellij IDEA 中的 jRebel

mysql - 使用 INSERT INTO 选择更新

transactions - bluebird node-mysql2事务

java - while循环中的空间分配

java - 在 Java 中获取参数化类的实例

java - 未在对象图上调用 Hibernate validator

java - Spring 和 Spring.net 有什么区别吗?