3

我有一个架构场景,我想讨论一下以获得您的意见。

我可以在这两者之间进行选择(这是强加给我的约束)

  1. 使用 EJB3+JPA - 没有 Spring/Hibernate
  2. POJO + JDBC - 再次没有 Spring/Hibernate

我有一系列需要集成的 Web 应用程序(仅限 Intranet)。在数据库级别,将有 3 到 4 个 oracle 数据库(每个数据库大约 40 到 50 个表)。对于某些查询,某些应用程序可能会与多个数据库进行交互。并发用户数将少于 100。每个应用程序的用户/受众范围为 10 到 6000(最大值)。

所有应用程序都将部署在一台服务器上,并且数据库和服务器很可能在同一台机器上。

大多数用例将是基于 CRUD 的(有些可以为 ORM 提供良好的域模型,而另一些则不能),带有一些业务流程、自动化作业等。未来可能需要为某些应用程序与 SAP 集成。

您认为在这种情况下 EJB3 会使应用程序更具可扩展性还是只会增加复杂性?如果我使用 POJO 进行设计,我不想无缘无故地增加复杂性。我试图游说 Spring 和 Hibernate,但没有成功。

如果您需要更多详细信息,请告诉我。

编辑:我忘了提到应用程序服务器。现在是 7。

4

8 回答 8

2

EJB 和 JPA 只是接口;你仍然需要有人来实现它们。因此,如果 Spring+Hibernate 是不可能的,那么这意味着没有 JPA,除非您可以为另一个框架获得 OK(... err ... Toplink,也许?有什么不是基于 Hibernate 的吗?)

如果您对 POJO 和 JDBC 感到困惑,我建议您查看Grails。这将使您的生活变得更加简单。

于 2009-07-09T16:40:09.753 回答
1

第一层讨论是比较{POJO + JDBC, write persistence by hand}和{framework for persence}。(我还怀疑您最终会需要有趣的服务,所以我认为 EJB3/SLSB 或 Spring 等价物是相关的,即使您要推出自己的持久性)。

所以我的信念是,持久性技术(JPA 或 Hibernate)现在处于您需要有充分理由使用它们的水平。hand-rolling crud JDBC 只是日常工作,不应该手动完成。

至于 JPA v Hibernate 和 Spring v EJB3 的辩论,我很模棱两可,似乎是一个充满宗教色彩的领域。

于 2009-07-09T16:47:06.820 回答
1

我看不出如何允许 JPA,但 Hibernate 不会。考虑到 Hibernate 是一个 JPA 实现,这没有多大意义。另一个 JPA 实现是否可以,例如 OpenJPA?

您没有提到您是否有现有服务器,或者将在尚未选择的服务器上安装您的应用程序。这个决定已经做出了吗?如果是这样,那可能会决定您的选择。一个完整的、最新的 JavaEE 服务器将带有 EJB3 和 JPA 实现。

如果服务器不是支持 EJB3 的服务器,那么 EJB3 就没有那么引人注目了。

但是,如果排除了 Spring 和 Hibernate 等明智的技术,总会有像 iBatis 这样的简单框架允许您将 POJO 与 JDBC 结合起来。

于 2009-07-09T16:48:35.070 回答
1

尽管您的约束有些矛盾(Hibernate 毕竟是 JPA 实现),但我建议您采用标准解决方案。如果您唯一的选择是像 EJB3/JPA 这样的标准堆栈与手工制作的 POJO/JDBC 实现,我会说选择 EJB3。

当您走 POJO/JDBC 道路时,您可能最终会创建自己的类似 Spring 的框架 - 但功能较少且测试较少 - 框架。对于应用程序开发人员来说,编写自定义框架几乎是不合理的。

于 2009-07-09T22:38:21.307 回答
0

只需使用 EJB+JPA!

我猜你被困在一些“企业”环境中,你不能使用开源框架。如果是这种情况,我猜上述接口的一些 IBM 或 Oracle 实现是可用的 - 使用它。

于 2010-07-01T02:41:52.907 回答
0

WAS 7 默认提供了 OpenJPA 实现。春天+

于 2013-05-06T17:46:49.533 回答
0

EJB3+JPA 将使您的工作变得非常简单..它具有高度可扩展性,并且非常易于配置和相互使用。创建实体是最困难的部分,但之后事情就变得 java 明智(特别是如果您使用实体关系)..我用过spring 和 hibernate 4 年,是的,如果您没有应用程序服务器,它们非常好。但只要您拥有 WAS 7.0,那么我推荐使用 EJB+JPA。

对于 Java 程序员来说,使用 JPQL 更加容易和合理。然而; 除非您使用仅在 WAS 8.5 中受支持的 JPA 2.1,否则您不能调用存储过程。

于 2013-11-29T18:19:10.250 回答
0

答案很简单——如果是 jboss/glassfish,如果是 tomcat,则使用 E​​JB3,使用纯 JPA,或者 Hibernate 或 Spring 数据

EJB3 与休眠?当然是 EJB3。你应该知道jboss下的EJB3用的是hibernate,glassfish下的EJB3用的是eclipse链接JPA。

于 2014-10-24T12:45:29.117 回答