如何使用JSF + Hibernate + Spring将桌面应用程序迁移到Web应用程序?

mat*_*man 1 jsf spring hibernate jpa spring-mvc

我打算将用java完成的桌面应用程序迁移到Web应用程序中.它有近15个包和100多个类.我正计划使用JSF(使用Primefaces)+ Hibernate + Spring.我对如何集成Hibernate和Spring只有一些了解,之前我还没有将它们与JSF集成.我只有三个星期,我每天只能在这个项目上花费不到五个小时.

我的一个朋友给我写了这个(复制并粘贴):

"你说你想将你的旧项目(JSF和Primfaces)导入Spring和Hibernate,你会发现它存在一些问题:1-你是否还想使用JSF作为UI?或者一起切换到Spring. - 你可以将JSF和Spring作为前端和后端,你只能拥有Spring(这是我的知识)

3-如果你一起切换到Spring我不认为你可以再使用Primefaces(只是一个猜测,因为Primefaces只是JSF自定义组件的集合).

4-另一方面,JSF没有与Hibernate集成,你不能轻易使用它.您必须使用完整的Java EE容器并拥有一个完整的Java EE项目,这是您在JSF中获得持久性和Hibernate的唯一方法,否则您最终将编写自己的持久性管理层(不是有趣的事情)来启用在您的JSF会话JPA会话之间进行链接.以及管理交易等许多其他事情.

5-使用Spring框架要好得多,它已经支持Hibernate."

我认为我在JSF和Hibernate中管理会话时遇到了误解.我想在这个项目中做的一件事是,学习一起使用这些框架的有效方法.即使我发现将JPA用于Hibernate也很容易,我会这样做.但我必须在不到3周的时间内挖掘并阅读一些书籍并完成项目.

我想出了这两个决定1.使用JSF和Hibernate管理所有事务.或者2.使用JSF + Hibernate + Spring ...但是我需要在集成它们之前对这些概念有一个深刻的理解.

你有类似的经历吗?如果我选择2号,你能解释一下这个概念会是什么样的吗?...

小智 7

所以,基本上,你说你有75个工时(两周)将听起来像一个相当复杂的桌面应用程序的内容转换成基于你不理解的架构的web应用程序使用你不确定合作的技术?我打算给你一个价格的两个答案..

咨询101
除非你有一个坚实的涉及建筑的理解,必须非常小心,你的诺言,包括时间来研究("优雅地失败").请记住,您正在与两个日历竞争:完成工作所需的工时和实际到期日(更不用说无数的"软"日期:测试开始,"掉线"日期,设计完成日期等).管理层通常会在不完全理解转换系统所涉及的内容的情况下推动这些决策("我们需要这个优秀应用/工具的网络版!").

来自你好友的笔记
很高兴听到你有资源可以在你需要帮助做出这些决定时去找.在试图解决这个问题时,这将是关键.至于他的建议:

  1. 这里很难说.很多都归结为你熟悉的东西.我自己偏爱Spring框架,因为它们往往相当小,并且非常注重集成.
  2. 这归结为您希望管理多少抽象层.
  3. 我没有尝试过这个特定的组合,但是快速搜索了这个示例项目
  4. 我不确定我理解你的朋友在这里讨论什么.我们正在讨论两个完全不同的问题:持久性和接口.您可以基于Hibernate开发一个全新的持久层,并在您的UI中利用此层,但根据您的时间框架,可能更容易开发一个与您的持久性机制更紧密结合的解决方案,并在您进行重构时进行重构有机会(或者至少,为下一个/支持开发人员保留非常好的笔记).
  5. 是的,Spring有Hibernate的集成点.然而,这并不一定意味着它会更好.请记住,有一个可用的UI框架(Spring Web内置了对JSF的支持,与各种持久性框架的集成以及一组相当可靠的库,可以作为粘合剂将它们整合在一起.

结束它
回到似乎是核心问题:我选择在两周内将此桌面应用程序转换为Web应用程序的架构是什么? 我讨厌给你一个共同的顾问答案,但是:这取决于.您最熟悉哪种技术?您愿意承担哪些技术风险(完整的Java EE堆栈与ORM是一个重大决策)?您的目标是什么(您是否希望学习新的东西,或按时提供有效,经过测试和满意的实施)?老实说,这可能不是问题的最佳答案,但是,确定所涉及的真正目标是技术领先的关键技能之一.我的看法?JFaces + Spring听起来像是一个体面的决定.一些反省灵魂......