为什么使用SSH框架?SSH和SSM框架如何选择


今天,面试官看到自己做的项目后,突然问了我一个让人两眼发懵的问题,那就是, 为什么使用SSH ?

  • 为什么使用?想用就用呗,那有为什么!
  • 哈哈,上面虽然是自己心中所想,但对于面试官来说,当然不是他想要的啦。
  • 下面就把问题的正解留给大家,以供参考。

1. 为什么使用SSH?

1.1 首先,基于现实考虑

当时我们软件工作室刚成立,熟悉开发的人不多,在学习黑马程序员课程时,只有很少人学到了 Struts2 + Hibernate。大部分人的进度只学到了Struts,甚至还要往后,所以,以当时我们的开发能力来说,我们选择的开发框架就只能是SSH。

1.2 为什么使用Struts2?

Struts2核心就是核心控制器(StrutsPrepareAndExecuteFilter)和业务控制器(Action类)

  1. 通过JSP、Servlet、JavaBean这些技术构建的系统非常的繁乱。Struts2结构层次分明,高可重用性等优点,增加了程序的健壮性和可伸缩性,便于开发与设计分工
  2. 可以减少重复代码的开发,提高工作效率
  3. 它对其他技术和框架显示出很好的融合性,如:Spring
1.3 为什么使用Hibernate?

Hibernate框架技术最关键是数据持久化,是将数据保存到持久层的过程

在这里插入图片描述

  1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
  2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作。session.save(User)
  3. Hibernate 中提供了两级Cache,降低了应用程序对数据库访问的频次,从而提高应用程序的运行性能。
1.4 为什么使用Spring?

Spring的核心是IoCAOP
核心容器:beans(管理bean),core(核心),context(上下文),expression(SpEL,表达式)

1. 方便解耦,简化开发

  • 通过Spring提供的loC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。
  • 有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用

2. AOP编程的支持

  • 通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。

3. 声明式事务的支持

  • 在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

4. 方便程序测试

  • 可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。

5. 方便集成各种优秀框架

  • Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。

2. Mybatis和Hibernate区别

  • Mybatis 技术特点:
  • 通过直接编写 SQL 语句, 可以直接对 SQL 进行性能的优化
  • 学习门槛低, 学习成本低。 只要有 SQL 基础, 就可以学习 mybatis, 而且很容易上手;
  • 由于直接编写 SQL 语句, 所以灵活多变, 代码维护性更好
  • 不能支持数据库无关性, 即数据库发生变更, 要写多套代码进行支持, 移植性不好。
  • Hibernate 技术特点:

优点

  • 标准的 ORM 框架, 程序员不需要编写 SQL 语句
  • 具有良好的数据库无关性, 即数据库发生变化的话, 代码无需再次编写。

缺点

  • 学习门槛高, 需要对数据关系模型有良好的基础, 而且在设置 OR 映射的时候, 需要考虑好性能和对象模型的权衡。
  • 框架中使用ORM原则,导致配置过于复杂,一旦遇到大型项目,配置文件和内容是非常庞大的,性能和维护问题随之而来,因此适用于业务固定的项目
  • 由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL。
  • 如果项目中各个表中关系复杂,表之间的关系很多,在很多地方把lazy都设置false,会导致数据查询和加载很慢,尤其是级联查询的时候。
  • Hibernate在批量数据处理时有弱势,对于批量的修改,删除,不适合用Hibernate,这也是ORM框架的弱点。Hibernate不适用于小型项目
  • 针对单一对象简单的增删查改,适合于Hibernate,而对于批量的修改,删除,不适合用Hibernate,这也是OR框架的弱点;要使用数据库的特定优化机制的时候,不适用于Hibernate
  • Mybatis 应用场景:
    • 需求多变的互联网项目, 例如电商项目。
  • Hibernate 应用场景:
    • 需求明确、 业务固定的项目, 例如 OA 项目、 ERP 项目等。

3. 有了struts2,为什么还需要 SprigMVC

  • 实现机制:
  • Struts2 是基于过滤器实现的。
  • Springmvc 基于servlet 实现。Servlet 比过滤器快。
  • Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。
  • 与Spring整合
  • Springmvc 是Spring 的一部分。与 Struts2更利于和 Spring 的整合。
  • 运行速度:
  • Struts2 是多例:请求来了以后,struts2 创建多少个对象
    • ActionContext,valuestack,UserAction,ActionSuport,ModelDriven userAction 里面属性:User 对象,userlist 集合等
  • Springmvc 是单例
  • 参数封装来分析:
  • Struts 基于属性进行封装。
  • Springmvc 基于方法封装。
  • 集成方面
  • SpringMVC集成了Ajax,使用非常方便,只需注解@ResponseBody、@RequestBody 就可以实现。
  • Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
3.1 知识拓展

@responseBody 把后台pojo 转换json 对象,返回到页面。
@RequestBody 接受前台json 数据,把json 数据自动封装javaBean。

文章参考

百度百科:Spring

作者:我是司
springMVC和struts2有什么不同?
为什么要用springMVC或者struts2?
让你实现一个MVC框架大概如何设计?

作者:刘大飞
hibernate的优缺点和适用场合

感谢两位博主的好文与感悟,想要更进一步了解详情的,欢迎大家进入两位博主大大的空间进行阅读。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSH框架是指Struts+Spring+Hibernate的集成框架,主要用于快速搭建Web应用程序。它将应用程序分为表示层、业务逻辑层、数据持久层和域模块层,以实现结构清晰、可复用、易于维护的Web应用程序。其中,Struts负责MVC分离,控制业务跳转;Hibernate提供持久层支持;Spring作为管理框架,管理Struts和Hibernate之间的关系。 而SSM框架指的是Spring+SpringMVC+MyBatis的集成框架。它是由Spring和MyBatis两个开源框架整合而成,通常用于数据源较简单的Web项目。在SSM框架中,SpringMVC是Spring的一部分,负责处理MVC的分离,而MyBatis则是用于提供持久层支持的框架。 另外还有Struts框架,它与SSH框架类似也是一种开源框架。它使用Servlet和JSP实现,并且基于MVC模型。Struts框架的核心组件包括Action、ActionServlet以及视图部分由多个相互关联的JSP文件组成。它可以有效地减少基于MVC模型的Web应用系统的开发时间,从而控制系统开发成本。 所以,SSH框架SSM框架都是用于快速开发Web应用程序的集成框架,而SSH框架使用的是Struts+Spring+Hibernate,而SSM框架使用的是Spring+SpringMVC+MyBatis。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [简述SSM框架SSH框架](https://blog.csdn.net/m0_37876935/article/details/93891639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值