【问题标题】:How to implement EJB 3.0, JPA, Hibernate and Struts 2 in one application?如何在一个应用程序中实现 EJB 3.0、JPA、Hibernate 和 Struts 2?
【发布时间】:2011-10-27 02:38:27
【问题描述】:

早安,

我必须在一个应用程序中使用 EJB 3.0、JPA、Hibernate 和 Struts 2,但我不知道该怎么做! 是否有任何其他 MVC 框架与 EJB 比 Struts 2 更好地集成?

谢谢你的回答。

【问题讨论】:

  • 为什么必须使用那套技术?如果有一个现有的应用程序它应该给你一个线索(因为我假设它正在工作)或者如果有其他程序员他们应该能够帮助你。我认为更多的 struts2 程序员使用 Spring 而不是 EJB...我认为更多的程序员通常使用 Spring 而不是 EJB。
  • 到目前为止,您集成了哪些技术?你有什么问题。我可以告诉您,可以在单个 Web 应用程序中使用这些技术中的每一种,但就目前而言,您的问题非常广泛。

标签: hibernate jpa struts2 ejb-3.0 jpa-2.0


【解决方案1】:

好吧,您所要求的并不是那么困难,尽管如果您不熟悉框架的各个方面,我建议您分步或分阶段进行处理。我通常首先让我的 MVC Web 应用程序开始工作。

第 1 步: 在您的情况下,我会让您的 Struts Web 应用程序正常工作。开发一个简单的 hello-world 应用程序,感受一下 struts 动作类如何与您的视图 (jsp) 页面交互以及如何操作值堆栈。

第 2 步: 接下来我将探索 JPA 架构,您将 Hibernate 指定为 JPA 框架,因此构建一个基本的 java 应用程序并玩弄数据库交互。构建几个数据访问类来查询数据并了解如何与数据库交互。

第 3 步: 接下来尝试将您的 struts 操作与您在第 2 步中构建的 JPA 类结合起来。您应该能够使用您在 JPA 实践项目中构建的数据访问类来查询数据。一旦您了解了如何将这两者结合起来,就开始研究 Struts 的 EJB 选项。

这是一篇与您的要求类似的文章: http://www.tzavellas.com/techblog/2007/07/03/using-dependency-injection-in-struts2-for-stateless-ejbs-part-1/

【讨论】:

    【解决方案2】:

    JSF 更好地集成在 Java EE 5+ 中。 尤其是当您使用 Facelets(JavaEE 6 中的 iirc 官方默认设置)时,它会很好地工作。 RHQ (http://rhq-project.org/ ) 曾经大量使用 JPA + EJB3 + JSF 直到 3 版本(RHQ 4 正在切换到 GWT),所以你仍然会在其中找到很多示例。 另外我认为那里有很多 JSF+JPA+EJB3 示例。

    您可能还想看看 CDI(“Seam”),因为这使得组件的集成更容易。

    【讨论】:

    • JSF 如何更好地与 EJB3 集成?
    • 可能是因为它包含在 JEE 伞形标准中,因此兼容的容器已经相应设置,而 Struts 是您需要自己完全设置和配置的东西。
    • 在 Struts2 中使用过 EJB 3.0,我无法想象 JSF 的集成度更好,但我从未使用过 JSF。
    • 用 maven 建立一个新的 struts2 项目需要大约 30 秒到一分钟...我知道一个事实,我不能在不告诉我的 IDE 的情况下就开始编写 JSF 代码,某事关于项目(就像它是一个网络项目)。然后再过一分钟添加我选择的 DI 框架。通常“良好集成”是用词不当,如今我们想要关注点分离,这就是 DI 和 AOP 变得如此普遍的原因(我们不想要一般意义上的“集成”,而是完全相反,我们想要独立的框架彼此)。
    • 至于'完全配置自己'......许多struts2用户都在使用约定(我应该说他们都应该是,但那是另一回事)。几乎没有什么可配置的。该框架将 url 映射到您的包结构,然后执行正确的对象并使用这些值填充正确的 jsp。当然,您需要知道一些关于如何命名事物的知识,但这很容易。其他框架开始的“约定优于配置”的口号是一个很好的口号。 EJB 位于服务层,因此应该完全独立于 Web 应用程序的关注点。
    猜你喜欢
    • 2011-05-07
    • 2012-02-16
    • 2011-04-05
    • 2014-07-21
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    相关资源
    最近更新 更多