Java 应用架构设计问题

Java 应用架构设计问题,java,architecture,jakarta-ee,Java,Architecture,Jakarta Ee,在设计基于Java/J2EE的web应用程序时,我需要您的建议。其特点如下: 纯粹面向数据库的应用程序(有10个表)。数据库是Oracle 三种不同类型的界面/屏幕: 2.1 WebSphere Portlet(6个接口/屏幕) 2.2手持设备(5个接口/屏幕) 2.3 Web应用程序(17个界面/屏幕) 很少有屏幕只是使用Crystal Reports构建的报表 没有太多的业务逻辑涉及 我现在关注的是: 我应该选择哪种体系结构作为2层还是3层 我应该使用struts/jsf(MVC)哪些框架?

在设计基于Java/J2EE的web应用程序时,我需要您的建议。其特点如下:

  • 纯粹面向数据库的应用程序(有10个表)。数据库是Oracle
  • 三种不同类型的界面/屏幕: 2.1 WebSphere Portlet(6个接口/屏幕) 2.2手持设备(5个接口/屏幕) 2.3 Web应用程序(17个界面/屏幕)
  • 很少有屏幕只是使用Crystal Reports构建的报表
  • 没有太多的业务逻辑涉及
  • 我现在关注的是:

  • 我应该选择哪种体系结构作为2层还是3层
  • 我应该使用struts/jsf(MVC)哪些框架?如果有的话?或者我应该选择没有任何框架的基于POJO的简单编程
  • 最大的问题是打包,我的意思是我不想为我要开发的三种不同类型的接口复制业务层和数据库层。您认为EJB是公开DB/业务层的好选择吗?我该怎么处理
  • 我是否应该在表示层使用任何特定的框架,如sitemash
  • 我应该为数据库层JPA/Hibernate使用任何特定的框架,还是应该使用简单的JDBC
  • 欢迎提出任何意见/建议

    溴 SC

    我应该选择哪种体系结构作为2层还是3层

    三层:视图、服务和持久性

    我应该使用哪些框架 struts/jsf(MVC)?如果有的话?或者应该 我喜欢简单的基于POJO的 没有任何框架的编程

    Struts?不,JSF?不,我推荐Spring,因为它同时支持web和门户MVC以及contract first web服务

    我认为,最大的问题是包装 我的意思是我不想复制 业务层和数据库层 三种不同类型的接口 我想发展。你觉得EJB怎么样 将是曝光的好选择 数据库/业务层?我该怎么做 处理这个

    我不推荐EJB。我建议使用基于HTTP的web服务进行远程处理

    我应该使用任何特定的框架吗 像sitemash这样的演示 层

    Sitemesh很好,但它不是表示层

    我会使用Velocity模板生成直接的HTML,并将其发送回客户端

    我应该使用任何特定的框架吗 对于数据库层JPA/Hibernate或 我应该使用简单的JDBC吗


    十张桌子?这个模式足够小,在我看来JPA和Hibernate似乎有些过分了。为持久化层创建一个POJO接口,您可以将实现与客户端隔离。从简单开始,如果您决定需要或想要,请切换它。

    我认为第一个答案有很好的基线。我会附和大多数观点,但会另外推荐数据库访问(见下图);与“原始”JDBC相比,它很好地简化了处理,但不需要任何映射。

    您是否计划为手持设备开发应用程序?或者您可以在它们中使用web应用程序?我想在它们中使用相同的web应用程序,但问题是表示层如何能够足够动态,以根据设备类型呈现界面?是否有任何框架提供此功能?如果您使用Spring,您的web控制器将使用相同的后端,而不考虑UI技术。让控制员确定他们正在处理的是哪种客户,并确定什么是适合发送的。我需要一些澄清。让我们用“层”来代替“层”。因为这只是逻辑上的分离。好吧,假设我选择春天。但是我很困惑,我怎么才能得到三层的分离呢?弹簧将属于哪一层?如果我有三个独立的包,比如说每层一个,那么Spring会给我什么好处呢?感谢您,portlet应用程序将在单独的服务器中运行。那么,您认为我应该将服务和数据库层公开为一个Web服务,以避免代码重复吗?如何实现分离?用于服务和持久性的Easy-POJO接口。Spring是一个依赖注入引擎(对象工厂),它使用面向方面编程。它有一些模块来帮助实现,包括JDBC和Hibernate,并将整个过程粘在一起。Spring将给您带来很大的提升。不,数据库不会作为服务公开。客户端将通过服务访问数据库。这使您可以更改身份验证和授权用户以及绑定和验证数据。没有那种SQL注入攻击。可以使用您选择的任何技术远程公开服务:SOAP、REST、EJB、RPC、HTTP、Hessian、Burlap—所有这些都受Spring支持。如果从POJO接口开始,可以推迟到以后再选择远程处理技术。这将使您的服务更易于测试。看来Spring是一个不错的选择。但我现在的团队对Struts很有经验,不幸的是,我没有太多时间在Spring上训练他们。我正在考虑使用Struts,但我仍然不知道如何将我的应用程序打包以部署在websphere application server(web用户)和websphere portal server(门户用户)上?谢谢您的回复。学习曲线有多快?鉴于团队是JDBC方面的专家……在我看来,它是一个非常简单且易于使用的库——有点像是团队经常为之编写自己的helpers方法(关闭连接、参数绑定)的自动化。主要的挑战在于lib没有被广泛地记录。因此,使用一些JDBC知识应该是轻而易举的事。