【问题标题】: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 更容易处理。