ssm和ssh区别及对⽐
1.什么是ssh?
SSH是 struts+spring+hibernate的⼀个集成,是⽬前⽐较流⾏的⼀种Web应⽤程序开源框架。
2.什么是ssm?
SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,⽬前⽐较主流的Java EE企业级框架,适⽤于搭建各种⼤型的企业级应⽤系统。
1.Spring简介
Spring是⼀个开源框架,Spring是于2003年兴起的⼀个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍⽣⽽来。它是为了解决企业应⽤开发的复杂性⽽创建的。Spring使⽤基本的JavaBean 来完成以前只可能由EJB完成的事情。然⽽,Spring的⽤途不仅限于服务器端的开发。从简单性、可测试性和松耦合的⾓度⽽⾔,任何Java 应⽤都可以从Spring中受益。简单来说,Spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架。
A.控制反转(IOC)是什么呢?
IOC:控制反转也叫依赖注⼊。利⽤了⼯⼚模式将对象交给容器管理,你只需要在spring配置⽂件总配置相应的bean,以及设置相关的属性,让spring容器来⽣成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置⽂件中配置的bean都初始化好,然后在你需要调⽤的时候,就把它已经初始化好的那些bean分配给你需要调⽤这些bean的类(假设这个类名是A),分配的⽅法就是调⽤A的setter ⽅法来注⼊,⽽不需要你在A⾥⾯new这些bean了。
[注意]:⾯试的时候,如果有条件,画图,这样更加显得你懂了
B.⾯向切⾯(AOP)⼜是什么呢?
⾸先,需要说明的⼀点,AOP只是Spring的特性,它就像OOP⼀样是⼀种编程思想,并不是某⼀种技术,AOP可以说是对OOP的补充和完善。OOP引⼊封装、继承和多态性等概念来建⽴⼀种对象层次结构,⽤以模拟公共⾏为的⼀个集合。当我们需要为分散的对象引⼊公共⾏为的时候,OOP则显得⽆能为⼒。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如⽇志功能。⽇志代码往往⽔平地散布在所有对象层次中,⽽与它所散布到的对象的核⼼功能毫⽆关系。在OOP设计中,它导致了⼤量代码的重复,⽽不利于各个模块的重⽤。将程序中的交叉业务逻辑(⽐如安全,⽇志,事务等),封装成⼀个切⾯,然后注⼊到⽬标对象(具体业务逻辑)中去。
实现AOP的技术,主要分为两⼤类:⼀是采⽤动态代理技术,利⽤截取消息的⽅式,对该消息进⾏装
饰,以取代原有对象⾏为的执⾏;⼆是采⽤静态织⼊的⽅式,引⼊特定的语法创建“⽅⾯”,从⽽使得编译器可以在编译期间织⼊有关“⽅⾯”的代码。
[简单点解释],⽐⽅说你想在你的biz层所有类中都加上⼀个打印‘你好,AOP’的功能这你经可以⽤aop思想来做,你先写个类写个⽅法,⽅法经实现打印‘你好,AOP’让后你Ioc这个类 ref=“biz.*”让每个类都注⼊。
2.Spring MVC简介
Spring MVC属于Spring Framework的后续产品,已经融合在Spring Web Flow⾥⾯,它原⽣⽀持的Spring特性,让开发变得⾮常简单规范。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的⾓⾊,这种分离让它们更容易进⾏定制。
3.MyBatis简介
MyBatis本是apache的⼀个开源项⽬iBatis, 2010年这个项⽬由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是⼀个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了⼏乎所有的JDBC代码和参数的⼿⼯设置以及结果集的检索。MyBatis使⽤简单的XML或注解⽤于配置和原始映射,将接⼝和Java的POJO
s(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。可以这么理解,MyBatis是⼀个⽤来帮你管理数据增删改查的框架。
3.hibernate和mybatis区别
Hibernate 框架
Hibernate是⼀个开放源代码的对象关系映射框架,它对JDBC进⾏了⾮常轻量级的对象封装,建⽴对象与数据库表的映射。是⼀个全⾃动的、完全⾯向对象的持久层框架。
1.2 Mybatis框架
Mybatis是⼀个开源对象关系映射框架,原名:ibatis,2010年由⾕歌接管以后更名。是⼀个半⾃动化的持久层框架。
MyBatis因为具有封装少,映射多样化,⽀持存储过程,可以进⾏SQL优化等特点。使得它取代了Hibernate成为了java互联⽹中⾸选的持久框架。
⽆论MyBatis或Hibernate都可以称为ORM框架,Hibernate的设计理念是完全⾯向POJO的,⽽MyBatis不是。
Hibernate基本不再需要编写SQL就可以通过映射关系来操作数据库,是⼀种全表映射的体现,⽽MyBatis需要我们提供SQL去运⾏。程序员
不⽤精通SQL,只要懂得操作POJO就能够操作对应数据库的表。
在管理系统时代,⾸先是实现业务逻辑,然后才是性能,所以Hibernate在当时是主流。
在移动互联⽹时代,MyBatis是⾸选,不屏蔽SQL,程序员可以⾃⼰制定SQL规则,能更加精确定义SQL,从⽽优化性能。更符合移动互联⽹⾼并发,⼤数据,⾼性能,⾼响应的要求。
Hiberate和MyBatis的增、删、查、改.对于业务逻辑层来说⼤同⼩异,对于映射层⽽⾔Hibemate的配置不需要接⼝和SQL.相反MyBatis是需要的。对于Hibermate⽽⾔,不需要编写⼤量的SQL,就可以完全映射,同时提供了⽇志、缓存、级联(级联⽐MyBatis强⼤)等特性,此外还提供HQL (Hibemate Query Language)对POIO进⾏操作,使⽤⼗分⽅便,但是它也有致命的缺陷。
由于⽆须SQL,当多表关联超过3个的时候,通过Hibermate的级联会造成太多性能的丢失,⼜或者我现在访问⼀个财务的表,然后它会关联财产信息表,财产⼜分为机械、原料等.显然机械和原料的字段是不⼀样的,这样关联字段只能根据特定的条件变化⽽变化,⽽Hibermate⽆法⽀持这样的变化。遇到存储过程,Hibemate只能作罢。更为关键的是性能,在管理系统的时代,对于性能的要求不是那么苛
刻,但是在互联⽹时代性能就是系统的根本,响应过慢就会丧失客户,试想⼀下谁会去⽤⼀个经常需要等待超过10 秒以上的应⽤呢?
以上的问题MyBatis都可以解决,MyBatis 可以⾃由书写SQL、⽀持动态SQL、处理列表、动态⽣成表名,⽀持存储过程。这样就可以灵活地定义查询语句,满⾜各类需求和性能优化的需要,这些在互联⽹系统中是⼗分重要的。
但MyBatis也有缺陷。⾸先,它要编写SQL和映射规则,其⼯作量稍微⼤于 Hibemate.其次,它⽀持的⼯具也很有限,不能像Hibemate那样有许多的插件可以帮助⽣成映射代码和关联关系,⽽即使使⽤⽣成⼯具,往往也需要开发者进⼀步简化, MyBatis 通过⼿⼯编码,⼯作量相对⼤些。所以对于性能要求不太苛刻的系统,⽐如管理系统、ERP 等推荐使⽤Hibemate;⽽对于性能要求⾼、响应快、灵活的系统则推荐使⽤MyBatis.
两者区别
2.1 开发⽅⾯
在项⽬开发过程当中,就速度⽽⾔:
hibernate开发中,sql语句已经被封装,直接可以使⽤,加快系统开发;
Mybatis 属于半⾃动化,sql需要⼿⼯完成,稍微繁琐;
但是,凡事都不是绝对的,如果对于庞⼤复杂的系统项⽬来说,发杂语句较多,选择hibernate 就不是⼀个好⽅案。
2.2 sql优化⽅⾯
Hibernate ⾃动⽣成sql,有些语句较为繁琐,会多消耗⼀些性能;
Mybatis ⼿动编写sql,可以避免不需要的查询,提⾼系统性能;
2.3 对象管理⽐对
Hibernate 是完整的对象-关系映射的框架,开发⼯程中,⽆需过多关注底层实现,只要去管理对象即可;
Mybatis 需要⾃⾏管理映射关系;
2.4 缓存⽅⾯
相同点:
Hibernate和Mybatis的⼆级缓存除了采⽤系统默认的缓存机制外,都可以通过实现你⾃⼰的缓存或为其他第三⽅缓存⽅案,创建适配器来完全覆盖缓存⾏为。
不同点:
Hibernate的⼆级缓存配置在SessionFactory⽣成的配置⽂件中进⾏详细配置,然后再在具体的表-对象映射中配置是那种缓存。
MyBatis的⼆级缓存配置都是在每个具体的表-对象映射中进⾏详细配置,这样针对不同的表可以⾃定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
⽐较:
Hibernate 具有良好的管理机制,⽤户不需要关注SQL,如果⼆级缓存出现脏数据,系统会保存,;
Mybatis 在使⽤的时候要谨慎,避免缓存CAche 的使⽤。
Hibernate优势
1. Hibernate的DAO层开发⽐MyBatis简单,Mybatis需要维护SQL和结果映射。spring ioc注解
2. Hibernate对对象的维护和缓存要⽐MyBatis好,对增删改查的对象的维护要⽅便。
3. Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
4. Hibernate有更好的⼆级缓存机制,可以使⽤第三⽅缓存。MyBatis本⾝提供的缓存机制不佳。
Mybatis优势
1. MyBatis可以进⾏更为细致的SQL优化,可以减少查询字段。
2. MyBatis容易掌握,⽽Hibernate门槛较⾼。
⼀句话总结
Mybatis:⼩巧、⽅便、⾼效、简单、直接、半⾃动化Hibernate:强⼤、⽅便、⾼效、复杂、间接、全⾃动化
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论