我有一个架构场景,我想讨论以获得您的意见。
我可以在这两者之间做出选择(这是对我施加的限制)
我有一系列需要集成的Web应用程序(仅限内部网)。在数据库级别,将有3到4个oracle数据库(每个数据库大约40到50个表)。对于某些查询,某些应用程序可能与多个数据库交互。并发用户数量将少于100.每个应用程序的用户/受众范围为10到6000(最大)。
所有应用程序都将部署在一台服务器上,数据库和服务器很可能位于同一台机器上。
大多数用例将基于CRUD(有些可以为ORM提供良好的域模型,而其他用户可能没有),具有一些业务流程,自动化作业等。未来可能需要与SAP集成以用于某些应用程序
您是否认为在这种情况下EJB3会使应用程序更具可扩展性或仅增加复杂性?如果我使用POJO进行设计,那么这个应用程序我不想在没有充分理由的情况下增加复杂性。我试图游说Spring和Hibernate但没有成功。
如果您需要更多详细信息,请与我们联系。
编辑:我忘记提及应用程序服务器了。它是WAS 7。答案 0 :(得分:2)
EJB和JPA只是接口;你仍然需要有人来实施它们。因此,如果Spring + Hibernate不可能,那么这意味着没有JPA,除非你可以为另一个框架做好准备(...错误... Toplink,也许?是否有任何不是基于Hibernate?)
如果您坚持使用POJO和JDBC,我建议您查看Grails。这将使你的生活更加简单。
答案 1 :(得分:1)
第一级讨论是将{POJO + JDBC,手工编写持久性}与{framework for peristence}进行比较。 (我也怀疑你最终会需要有趣的服务,所以我认为EJB3 / SLSB或Spring等效是相关的,即使你要自己坚持下去。)
所以我的信念是,持久性技术(JPA或Hibernate)现在处于一个需要充分理由 来使用它们的水平。手工滚动的问题JDBC只是一项不必手工完成的日常工作。
至于JPA v Hibernate和Spring v EJB3的争论,我很暧昧,似乎是一个有很多宗教信仰的领域。
答案 2 :(得分:1)
我看不出如何允许JPA,但Hibernate不会。考虑到Hibernate是一个JPA实现,这没有多大意义。另一个JPA实现是否可以,例如OpenJPA?
您尚未提及是否拥有现有服务器,或者是否会在尚未选择的服务器上安装您的应用。这个决定已经做出了吗?如果是这样,那可能决定了您的选择。一个完整的,最新的JavaEE服务器将随附EJB3和JPA实现。
如果服务器不是支持EJB3的服务器,那么EJB3就不那么引人注目了。
但是如果排除了诸如Spring和Hibernate之类的敏感技术,那么总是有一些简单的框架,比如iBatis,它允许你将POJO与JDBC结合起来。
答案 3 :(得分:1)
虽然你的约束有点矛盾(毕竟Hibernate是一个JPA实现),我建议你采用一个标准的解决方案。如果你唯一的选择是像EJB3 / JPA这样的标准堆栈,而不是手工制作的POJO / JDBC实现,我会说选择EJB3。
当您采用POJO / JDBC之路时,您可能最终会创建自己的Spring - 但功能较少且测试较少的框架。编写自定义框架对于应用程序开发人员来说几乎是不合理的。
答案 4 :(得分:0)
去EJB + JPA!
我猜你会被困在某个“公司”环境中,你不能使用开源框架..如果是这种情况,我想上面的接口的某些IBM或Oracle实现是可用的 - 使用它。
答案 5 :(得分:0)
WAS 7默认提供OpenJPA实现。 Spiring
答案 6 :(得分:0)
EJB3 + JPA将使您的工作变得非常简单。它具有很高的可扩展性,并且非常易于配置和使用。创建实体是最棘手的部分,但之后的事情是明智的(特别是如果您使用实体关系)。我使用spring和hibernate 4年,是的,如果你没有应用程序服务器它们非常好。但只要你有WAS 7.0,我建议使用EJB + JPA。
使用JPQL对java程序员来说更容易和合理。然而;除非使用仅在WAS 8.5中支持的JPA 2.1,否则无法调用存储过程。
答案 7 :(得分:0)
答案很简单 - 如果是jboss / glassfish,请使用EJB3 如果是tomcat,请使用纯JPA,或者Hibernate或Spring数据
EJB3 vs Hibernate?当然是EJB3。你应该知道jboss下使用hibernate的EJB3,使用eclipse链接JPA的glassfish下的EJB3。