我是 Java Web 应用程序开发的新手。到目前为止,我所使用的都是普通的旧servlet、jdbc 和jsps。我开始阅读所有框架,但我完全困惑并迷失在框架群中?所以我有一些问题:

  1. EJB3 和 Hibernate 是竞争技术还是可以一起使用。
  2. 如果我使用 JBoss Seam,我是否还需要使用 Hibernate 来满足我的 ORM 需求,还是 Seam + EJB3 来解决这个问题?
  3. 如果我必须使用 JBoss Seam 开发 Web 应用程序,我需要学习哪些典型框架?是否属于以下部分或全部:接缝(当时)JSF EJB3冬眠控制器的春季倒置
  4. 我可以使用 JBoss Seam 在 JBoss Portal 上开发应用程序吗?

谢谢维卡斯

有帮助吗?

解决方案

1.EJB3 和 Hibernate 是竞争技术还是可以一起使用。

它们有竞争的 API(JPA 与 Hibernate 的 API 不同),但 Hibernate 可以插入到 JPA 下,只是不要指望与为 Hibernate 编码的东西具有互操作性 - 特别是 jBPM (3.2) 即使在 Seam (2.1.1) 下也不能完全互操作。

2.如果我使用 JBoss Seam,我是否还需要使用 Hibernate 来满足我的 ORM 需求,还是 Seam + EJB3 来解决这个问题?

据我了解,你可以做任何一个。

3.如果我必须使用 JBoss Seam 开发 Web 应用程序,我需要学习哪些典型框架?是否属于以下部分或全部:Seam (当然) JSF EJB3 Hibernate Spring 控制容器反转

JSF - 对于 Seam 真正发挥作用至关重要 - 我建议重点关注 Facelets,将其作为创建 JSF 页面的主要方式。语法很好且熟悉 - 普通的旧命名空间限定 XHTML,服务器端组件位于单独的命名空间中。非常琐碎和干净,与我尝试过的其他任何东西都不一样。

EJB3 - 如果您喜欢或不喜欢,由您决定。朝着这个方向前进会将您带入 Java EE,这仍然让我有点害怕,尽管它有很多好处。

休眠 - 如果你愿意,由你决定。JPA 实体管理器提供了替代方案。

Spring IoC,呃...是的,当然,如果您愿意,这又取决于您。Seam 负责有状态会话和会话作用域 bean(通常是表示逻辑层的一部分),而 Spring 最适合无状态上下文,例如后端服务(例如数据库和任何 SOA 客户端)的接口。

我发现 Seam + JSF (facelets) + Hibernate + Spring 是通过 jBPM 创建 UI 的非常好的组合,并且在另一个用于交付内容页面的项目中也是如此,尽管这并不是 Seam 的真正用途。

  1. 我可以使用 JBoss Seam 在 JBoss Portal 上开发应用程序吗?

抱歉,无法帮助您。

其他提示

  1. 是和不是。EJB3(或者更确切地说是 JPA)是通过 Java5 注释声明 OR 映射以及查询它们的接口的规范。你仍然需要一个实现。Hibernate Annotations 将是映射的实现,而 Hibernate EntityManager 是查询接口的实现 - 它们使用“主”Hibernate 来完成其工作。您应该能够混合和匹配这些 - 可以使用 JPA 注释,并使用 Hibernate 的 API,例如 HQL 和 Criteria。
  2. 取决于,主要取决于应用程序服务器。功能齐全的应用程序服务器可以为您处理 JPA 内容,并且您可以通过 web.xml 和应用程序服务器控制台进行配置。当然,这不包括混合搭配。不管应用程序服务器如何,您仍然可以自己推出,以编程方式/使用 Spring/其他方式访问查询 API。
  3. JSF 是使用Seam 的先决条件。至于 EJB3/JPA 与 Hibernate - 偏好问题。您实际上不需要了解太多/任何 Hibernate 即可将其用作 JPA 实现。JPA 强烈基于 Hibernate 的 API,因此无论哪种方式,差异可能都相当小。Spring 并不是绝对必要的,JBoss 正在尽最大努力通过 Web Bean 获得一些市场份额。Seam 的某些功能与 Spring 的某些功能重叠。Spring 是高度模块化的,并且涵盖了很多内容,因此您应该能够挑选您想要的 Spring 功能。
  4. 不知道。

JBoss Seam 是一个元框架,它结合了 EJB3 和 JSF 框架,并以依赖注入的形式包装它们。作为一种 J2EE 技术,您通常将其部署在应用程序服务器内 - 这就是 JBoss Portal 的用武之地。

JBoss Portal 是 JBoss 组织提供的商业产品。它将各种 J2EE 组件以“模块”的形式捆绑在一起,这些组件将包括 EJB3、JSF 和 JBoss应用服务器.

查看 这个链接, ,然后滚动到底部以找出 Seam 和 Portal 组合在一起的位置。Portal 站点描述了它提供的模块(我假设它们附有一个定价模型),Seam 支持由 门户组件模块.

  1. EJB3 和 Hibernate 是互补技术。EJB3 定义了 JPA (API),Hibernate 可以用作 JPA 的持久性提供者。

  2. 您仍然需要使用持久性提供程序之一,可以是 Hibernate、OpenJPA 等。

  3. JSF 和 EJB3。

  4. 关于 Seam 和 Portal 开发:更好的问题是 JSF 和 Portal 协同工作的效果如何?

当然,它们确实一起工作 - 这是相关教程: 使用 JSF、Ajax 和 Seam 开发 Portlet

关于问题#4。

如果使用桥接器,则可以在 JBoss Portal 内部使用 JBoss Seam。

目前有一个 JBoss Portlet 桥 处于 CR 阶段并即将发布的项目。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top