各种用于Web应用程序设计的Java框架如何结合在一起

时间:2009-04-29 11:44:51

标签: java java-ee frameworks seam

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

  1. EJB3和Hibernate是竞争技术还是可以一起使用。
  2. 如果我使用JBoss Seam,我是否还需要使用Hibernate来满足我的ORM需求,或者Seam + EJB3是否需要这样做?
  3. 如果我必须使用JBoss Seam开发一个webapp,我需要学习哪些典型的框架?是以下部分或全部: 缝(当然) JSF EJB3 过冬 控制容器的弹簧反转
  4. 我可以使用JBoss Seam在JBoss Portal上开发应用程序吗?
  5. 感谢 维卡斯

5 个答案:

答案 0 :(得分:2)

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

他们有竞争的API(JPA与Hibernate的API不同)但是Hibernate可以插在JPA下面,只是不要期望与Hibernate编码的东西的互操作性 - 特别是jBPM(3.2)即使在Seam下也不能完全互操作(2.1) 0.1)。

2。如果我使用JBoss Seam,我是否还需要使用Hibernate来满足我的ORM需求,或者Seam + EJB3是否需要这样做?

据我所知,你可以做任何一件事。

3。如果我必须使用JBoss Seam开发webapp,我需要学习哪些典型的框架?是以下部分还是全部:Seam(ofcourse)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上开发应用程序吗?
  2. 抱歉,无法帮助你。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

JBoss Portal是JBoss组织的商业产品。它以“模块”的形式将各种J2EE组件捆绑在一起。这些组件将包括EJB3,JSF和JBoss Application Server

查看this link,然后滚动到底部以找出Seam和Portal适合的位置。门户网站描述了它提供的模块(我假设它们附有定价模型),Portlet module提供了Seam支持。

答案 3 :(得分:0)

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

  2. 您仍然需要使用其中一个可能是Hibernate,OpenJPA等的持久性提供程序。

  3. JSF和EJB3。

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

  5. 他们当然一起工作 - 这是相关教程:Developing Portlets using JSF, Ajax, and Seam

答案 4 :(得分:0)

关于问题#4。

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

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