SSH和SSM的区别

本文详细介绍了Spring框架的核心功能,包括控制反转、依赖注入和面向切面编程等,并对比了SSH(Spring+Struts2+Hibernate)与SSM(Spring+SpringMVC+MyBatis)两种主流Java企业级应用框架的不同之处。

Spring的简介

  • Spring的官网流动简介

Spring makes Java simple.[spring让Java变得更简单]

Spring makes Java modern.[]

Spring makes Java productive.

Spring makes Java reactive.

Spring makes Java cloud-ready.
Spring使Java简单易用、紧跟时代、复用性强、快速响应、云就绪。

Spring整个框架可以当作是Spring,Web是衍生部分Spring整个框架可以当作是Spring,Web部分是衍生部分

控制反转和依赖注入还有面向切面编程是其中核心功能

控制反转是将主动权交与工厂。
依赖注入是将需求与工厂说明,由工厂分配。
面向切面编程是在原代码不变的情况下,在切入点增加功能。

Spring的优点:
  1.有利于面向接口编程习惯的养成。
  2.目的之一是为了写出易于测试的代码。
  3.非侵入性,应用程序对Spring API的依赖可以减至最小限度。
  4.一致的数据访问介面。
  5.一个轻量级的架构解决方案

SSH和SSM的区别

SSH是Spring+Struts2+Hibernate的缩写,是一种较主流的Java企业级应用框架。

SSM是Spring+SpringMVC+MyBatis的缩写,是继SSH之后,目前比较主流的Java企业级应用框架。

本质上都是Spring框架+MVC模式框架+ORM技术框架

ssh通常使用 Struts2为控制器(controller) ,spring 为事务层(service), hibernate 负责持久层(dao)

ssm通常使用 springMVC为控制器(controller) ,spring 为事务层(service), MyBatis 负责持久层(dao)

MVC设计模式

Servlet是基于Java语言的动态WEB开发技术,Servlet指的是J2EE中所提出来的企业级服务器开发规范。

servlet的缺点:
每次请求都需要开扇门,不够安全,容易被攻击。
服务器要求高,管理较难。

MVC是模型(Model)、视图(View)、控制器(Controller)的缩写,是一种分离显示业务逻辑、数据和界面的设计模式

model(模型层)与底层数据库交互
View(视图层)跟页面进行交互
Controller(控制器)通过控制层进行交流

在这里插入图片描述
客户请求查看数据,控制器请求模型层查询,模型层通过数据库查询,返回控制器,后交给视图层渲染,后显示在客户浏览器

SpringMVC的关系

SpringMVC与Spring
两者是包含与被包含的关系。

MVC:安全性高,生命周期短。

Spring与SpringMVC的吻合度更高。
相当于是亲子关系。

ORM程序技术

JDBC连接数据库
1,注册驱动 2,获取链接 3,获取Statement 4,执行SQL语句返回结果集
5,遍历结果集 6,释放资源

传统ORM技术

对象(Object)、关系(Relational)、映射(Mapping)

类名(Person) =表名(Person)
属性名id name = 字段名id name

不需要写SQL语句,学习成本低
语句死板,不够简便

通过操作对象,操作数据库

MyBatis简介

MyBatis是一款优秀的持久性框架,它支持自定义 SQL、存储过程以及高级映射。
Mybatis可以通过简单的XML来进行或注解来配置和映射原始类型。

Mybatis
方法 = SQL语句
入出参 = 入出参

MyBatis的优点是
1.简单易学:本身就很小且简单。
2.灵活: sql写在xml里,便于统一管理和优化
3.回复查询的效率更高

MyBatis的缺点是
数据库移植一般,需要自己编写SQL语句

<think>好的,我现在需要回答用户关于SSHSSM框架的问题。首先,我需要明确这两个缩写分别代表什么。SSH通常指的是Struts2、SpringHibernate的组合,而SSM一般指的是Spring、Spring MVCMyBatis的组合。不过,用户可能对这两个框架不太熟悉,所以我需要先确认自己对这些框架的理解是否正确,然后组织一个结构清晰的回答。 首先,我应该回顾一下每个框架的作用特点。Struts2是一个基于MVC设计模式的Web应用框架,负责处理请求响应。Spring是一个轻量级的控制反转(IoC)面向切面(AOP)的容器框架,用于管理Bean集成其他框架。Hibernate是一个对象关系映射(ORM)框架,主要用于数据库操作,将Java对象映射到数据库表。 而SSM中的Spring MVC是Spring框架的一部分,用于构建Web应用程序,处理Web层的请求分发。MyBatis也是一个持久层框架,但它更侧重于SQL映射,允许更灵活的SQL编写,相比Hibernate的自动化ORM,MyBatis需要手动编写SQL语句。 接下来,我需要比较这两个组合的优缺点。比如,SSH中的Struts2相比Spring MVC可能更复杂,配置更多,而Hibernate的ORM虽然强大,但学习曲线较陡,且对于复杂查询可能不如MyBatis灵活。SSM组合由于使用Spring MVCMyBatis,可能在配置上更简洁,适合需要更多SQL控制的项目。 另外,考虑到现代开发趋势,比如Spring Boot的兴起,可能SSM更容易与Spring Boot集成,而SSH逐渐被替代。这也是需要提到的点,以帮助用户了解当前的技术趋势。 在组织回答时,需要按照用户的要求,结构清晰,分点说明每个框架的组成部分、特点、优缺点,以及适用场景。同时,要使用用户提供的格式,比如分步骤、加粗标题、列表等,但要注意避免使用Markdown格式,所以可能需要用文字描述结构。 还需要检查是否有技术细节错误,例如是否正确区分了Spring MVCStruts2的不同,或者Hibernate与MyBatis的核心区别。如果有不确定的地方,可能需要查阅资料确认,比如Hibernate是否支持原生SQL,或者MyBatis的映射方式。 最后,总结部分应该给出选择建议,帮助用户根据项目需求决定使用哪个框架组合。例如,如果项目需要快速开发且对SQL灵活性要求不高,可能SSH适合;如果需要更多控制SQL或与Spring生态更好集成,SSM更合适。 过程中需要注意使用中文,保持口语化,但不要使用专业术语时仍需准确。同时,确保遵循之前的系统级指令,比如数学公式的正确格式,但在这个问题中可能不太涉及数学内容,所以重点在于框架介绍比较的结构内容正确性。</think>以下是关于SSHSSM框架的对比分析,分步说明其核心区别与适用场景: --- ### **1. 框架组成** - **SSH** - **Struts2**:基于MVC的Web层框架,处理请求分发页面跳转。 - **Spring**:整合各层,通过IoC(控制反转)AOP(面向切面)管理Bean依赖。 - **Hibernate**:ORM框架,将数据库表映射为Java对象,封装JDBC操作。 - **SSM** - **Spring**:核心容器,管理Bean生命周期依赖注入。 - **Spring MVC**:Web层框架,替代Struts2,更轻量且与Spring无缝集成。 - **MyBatis**:持久层框架,通过XML/注解配置SQL,灵活控制数据库操作。 --- ### **2. 核心差异** #### **(1) Web层实现** - **SSH的Struts2** - 基于拦截器(Interceptor)机制,配置复杂(`struts.xml`)。 - 支持OGNL表达式,但安全性曾暴露漏洞(如历史远程代码执行问题)。 - **SSM的Spring MVC** - 基于Servlet API,通过`@Controller``@RequestMapping`简化配置。 - 与Spring整合更紧密,依赖注入直接支持。 **示例代码对比**: - Struts2 Action类需继承`ActionSupport`: ```java public class UserAction extends ActionSupport { public String execute() { ... } } ``` - Spring MVC直接使用注解: ```java @Controller public class UserController { @RequestMapping("/user") public String getUser() { ... } } ``` #### **(2) 持久层实现** - **Hibernate** - 全自动ORM,通过`hbm.xml`或注解映射对象与表。 - 生成HQL,开发者无需直接写SQL,但复杂查询优化困难。 - **MyBatis** - 半自动ORM,需手动编写SQL(XML或注解),灵活性高。 - 支持动态SQL,适合复杂查询场景。 **示例SQL控制对比**: - Hibernate通过Criteria API: ```java Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.eq("name", "Alice")); List<User> users = criteria.list(); ``` - MyBatis在XML中定义: ```xml <select id="selectUserByName" parameterType="String" resultType="User"> SELECT * FROM user WHERE name = #{name} </select> ``` #### **(3) 配置复杂度** - **SSH** - 需配置`struts.xml`、`hibernate.cfg.xml`、`applicationContext.xml`,文件多且冗余。 - 依赖注入需手动声明Bean,整合步骤繁琐。 - **SSM** - Spring MVC通过注解简化配置(如`@Service`、`@Autowired`)。 - MyBatis的`SqlSessionFactory`可直接由Spring管理,整合更高效。 --- ### **3. 性能与灵活性** - **SSH** - Hibernate的缓存机制(一级/二级缓存)提升性能,但过度依赖可能引发数据不一致。 - Struts2的拦截器链增加请求处理耗时。 - **SSM** - MyBatis直接控制SQL,便于优化查询性能。 - Spring MVC无额外拦截器开销,响应更快。 --- ### **4. 适用场景** | **框架** | **优势场景** | **劣势场景** | |----------|--------------------------------------------|---------------------------| | SSH | 传统企业应用(需全自动ORM、历史项目维护) | 高并发或需精细化SQL控制 | | SSM | 互联网应用(灵活SQL、轻量级、快速迭代) | 简单CRUD且希望减少SQL编写 | --- ### **5. 发展趋势** - **SSH**:逐渐被淘汰,Struts2因安全性复杂度问题,Hibernate在微服务场景下灵活性不足。 - **SSM**:主流选择,尤其搭配Spring Boot可快速构建应用。MyBatis的扩展工具(如MyBatis-Plus)进一步简化开发。 --- ### **总结建议** - **选择SSH**:仅限维护旧系统或团队熟悉Java EE传统架构。 - **选择SSM**:新项目优先,尤其是需要高频SQL优化或与Spring生态(如Spring Cloud)集成的场景。 - **现代替代方案**:Spring Boot + JPA/Hibernate(简化配置)或Spring Boot + MyBatis-Plus(增强灵活性)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值