从 EJB3 迁移到 Spring、Hibernate

2024-03-02

我们有一个基于 EJB3、Oracle 10 和 JBoss 4 的桌面应用程序。这是大约三年前创建的。 JPA 实体用于 ORM,业务逻辑在无状态会话 bean 中实现。客户端是使用Swing API 开发的。

现在需要在下一个版本的应用程序中用 Spring、Hibernate 和 JBoss 替换以前的技术。客户端仍将处于 Swing 中。计划是用 POJO 替换实体,并将业务逻辑从 Session Bean 转移到 Spring Bean,即数据访问对象(扩展 HibernateDaoSupport)。

那么问题来了,我们是否有可能将我们的应用程序完全从Session Beans中解放出来,并将业务逻辑转移到Spring Dao上呢?或者我们仍然需要保留会话 Bean 吗?如果完全避免会话 Bean,客户端应用程序将如何访问业务方法?与基于 JavaEE 的应用程序一样,可以通过 Jndi 查找来访问会话 Bean。

任何建议都将不胜感激。


这是完全可能的,事实上这些技术并没有那么不同。要立即开始,请尝试以下操作:

<context:component-scan
        base-package="com.example.project"
        scope-resolver="org.springframework.context.annotation.Jsr330ScopeMetadataResolver">
    <context:include-filter type="annotation" expression="javax.ejb.Stateless"/>
</context:component-scan>

折断!现在您所有的 SLSB 都是 Spring beans 的原型。如果某些 SLSB 有状态(废话!),您将必须将它们包装在池代理中,并且还有更多工作要做。但 Spring 已经支持大多数 EE 功能。例如,一开始就坚持使用 JPA 和 Hibernate 后端 - 不需要更改 DAO 代码,@EntityManger可以用同样的方式注入Spring bean。

同时,您还可以混合使用 Spring 和 EJB——EJB 可以轻松地注入到 Spring bean 中,从而提供良好的互操作性。

UPDATE: 另外,你为什么要“降级“从 JPA 到 Hibernate?如果您的应用程序与 JPA 配合良好,也可以在 Spring 应用程序中使用它 - 当您需要 Hibernate 特定功能时,您仍然可以偶尔使用它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 EJB3 迁移到 Spring、Hibernate 的相关文章

随机推荐