【问题标题】:Is it hard to convert a web app built with Jsp, Servlets & mySQL to one with Spring & Hibernate?将使用 Jsp、Servlets 和 mySQL 构建的 Web 应用程序转换为使用 Spring 和 Hibernate 构建的 Web 应用程序是否很难?
【发布时间】:2010-11-10 03:44:09
【问题描述】:

我目前正在构建一个 java web 应用程序。我一直在寻找使用 Spring 和 Hibernate,所以我对它们有一些适当的了解,但我只是在阅读和学习它们时筋疲力尽。如果我继续在 MySQL 后端使用 JSP 和 Servlet 构建它,我会看到什么样的代码重用级别?我想 JSP 和 POJO 或多或少是相同的,但是其余的代码呢?

谢谢!

【问题讨论】:

    标签: java hibernate spring jsp servlets


    【解决方案1】:

    这取决于

    • 您有多少业务逻辑与表示逻辑混合在一起
    • 如果你使用 pojo 的

    如果您将 biz 逻辑分开,并且主要使用 pojo,那就更容易了。

    那要看你想用多少spring和hibernate了。

    • 你可以复用已经写好的sql,也可以依靠hibernate为你生成sql
    • 您可以使用 Spring 管理的 bean
    • 你可以使用spring web mvc

    对于通用方法,您需要以面向层的方式重新组织您的应用程序:

    • 处理数据库调用的存储库层
    • 业务层,持有业务逻辑,数据转换,无依赖关系;业务层调用仓库层
    • Web 层,您可以在其中拥有控制器、表示逻辑; web层调用业务层代码

    【讨论】:

      【解决方案2】:

      重构总是一项艰巨的工作.... 您应该考虑迭代部分重构(模块/逻辑单元)。

      春天不是侵入性的。所以它的使用应该很容易。 看看 IBM 的“don't repeat the dao”。他们有最佳实践,可以帮助您进行干净的实施。

      如果你使用spring,你应该看看spring webmvc!

      【讨论】:

        【解决方案3】:

        假设您使用 JSTL 而不是 scriplet 代码,您很可能可以重用 JSP。您将添加 Spring 标记。

        休眠并不是 100% 必要的。您可以从 Spring JDBC 开始,只有在您认为它可以帮助您的情况下才迁移到 Hibernate。在您拥有在 Spring 下运行的功能之后,我将其称为第二步。

        Spring 非常适合与其他代码一起工作。它不必是全有或全无的命题。

        Spring 会让你创建一个服务接口。您将拥有一个持久层。 Web MVC 将隔离所有视图关注点。您将使用 Spring 的前端控制器 servlet 将请求路由到控制器。控制器将担心验证和绑定 HTTP 参数到对象并将它们传递给服务以完成请求。

        您不谈论安全性。 Spring 安全性将是一个奖励。

        【讨论】:

          【解决方案4】:

          如果您使用 servlet、JDBC DAO 和 JSP 构建,那么稍后将 Spring 引入应用程序将相当简单:

          • 用 Spring 控制器替换 servlet 代码。这会给 Spring 带来一些负面影响,因为它们不仅仅是 servlet 替代品,而是一个开始。
          • 在您的 JDBC DAO 中,使用 Spring 的 JdbcDaoSupport 和/或 JdbcTemplate 支持类。您的大部分 JDBC 代码将保持不变,您只需移除一些管道并让 Spring 承担压力。
          • 如果您的应用程序使用网页表单,您可以选择使用 Spring 的表单标签库,尽管这也需要重新设计控制器。如果您愿意,您可以完全不修改 JSP。
          • 您可以开始使用 Spring 上下文来开始将控制器和 DAO 自动连接在一起,从而减少手动编写的连接。

          您可以按任何顺序执行这些步骤中的任何一个,一次一个步骤。 Spring 非常擅长随心所欲地发挥作用,然后又不碍事。

          Hibernate 是一种不同的鱼。它又大又复杂,一开始有点吓人。我建议先适应 Spring,因为 Spring 让 Hibernate 更容易处理。

          【讨论】:

            猜你喜欢
            • 2017-06-10
            • 2015-10-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-01-22
            • 1970-01-01
            • 2017-04-07
            相关资源
            最近更新 更多