框架基础知识spring springmvc mybatis struts hibernate

一、spring作用

1、能够很好的各大框架整合

2、通过IOC容器管理对象的创建和销毁工厂模式

3、使用hibernate、mybatis时,不同每次都编写提交的事物写的代码,可以使用spring的AOP来管理事务


二、springmvc工作原理

1、客户端请求提交到DispatcherServlet

2、由 DispatcherServlet 控制器查询HandlerMapping,找到处理请求的controller

3、Controller调用业务逻辑处理后,返回ModelAndview

4、DispatcherServlet查询视图解析,找到ModelAndview指定的视图

5、视图负责将结果显示到客户端


三、mybatis 优缺点


优点:SQL在xml中,统一管理和优化。

     提供映射标签,支持对象和数据库的orm字段关系映射

    可以对SQL优化

缺点:SQL工作量大,移植性不好,不支持级联。


四、声明式事务和编程式事物

编程式事务需要你在代码中直接加入处理事务的逻辑,可能需要在代码中显式调用beginTransaction()、commit()、rollback()等事务管理相关的方法,如在执行a方法时候需要事务处理,你需要在a方法开始时候开启事务,处理完后。在方法结束时候,关闭事务.
声明式的事务的做法是在a方法外围添加注解或者直接在配置文件中定义,a方法需要事务处理,在spring中会通过配置文件在a方法前后拦截,并添加事务.
二者区别.编程式事务侵入性比较强,但处理粒度更细.

五、谈谈对ssm框架的整合

spring+springmvc+mybatis,标准的mvc设计模式。

划分为显示层、controller、service、dao。

spring实现业务对象管理、springmvc负责请求的转发和试图管理、mybatis作为数据对象持久化引擎

六、maven作用

帮助下载jar包,寻找依赖、帮助,热编译、热部署

七、Struts2工作原理

    1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求

    2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 

    3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 

    4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 

    5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类 ,这里,我们一般是从struts.xml配置中读取。

    6、ActionProxy创建一个ActionInvocation的实例。

    7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

    8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。

八、springmvc和Struts2区别

机制:springmvc入口是servlet,Struts2入口是filter

性能:springmvc比Struts2快一点,springmvc给予方法设计;Struts2基于类,每发一次请求都会实例一个action,       每个action都会注入属性

参数传递:Struts2再接收参数的时候,可以采用属性,说明可以让多个方法共享。

拦截器机制:springmvc用的是独立的AOP方式,Struts2有自己的interception机制。Struts2配置文件比springmvc       大,springmvc使用简洁,比Struts开发效率要高。

九、hibernate中get和load的区别

1、get不管数据有没有被使用,都会发出SQL
    load如果查询的数据没有被使用,不会发出SQL,使用数据才会发出sql,支持懒加载lazy
2、get如果未查到数据,报空值
    load未查到数据,抛出异常
十、hibernate工作原理
1、读取并加载配置文件   2、创建sessionFactory   3、打开session
4、打开事物                     5、持久化操作                  6、提交事物,关闭资源
7、关闭session                8、关闭sessionFactory   

十一、hibernate优缺点
优点1、对象关系数据库映射,程序更加面向对象
       2、持久化状态
       3、没有侵入性,轻量级框架
       4、移植性好
       5、缓存机制,提供一级缓存和二级缓存
       6、简洁的HQL编程
缺点:批量处理数据时有弱势,不适合批量操作

十二、hibernate和mybatis的区别
     1.两者最大的区别

针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。

针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。

2.开发难度对比

Hibernate的开发难度要大于Mybatis。主要由于Hibernate比较复杂、庞大,学习周期较长。而Mybatis则相对简单一些,并且Mybatis主要依赖于sql的书写,让开发者感觉更熟悉。

3.sql书写比较

MybatisSQL是手动编写的,所以可以按需求指定查询的字段。不过没有自己的日志统计,所以要借助log4j来记录日志。

Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。不过Hibernate具有自己的日志统计。


4.数据库扩展性比较

Mybatis由于所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差。

Hibernate与数据库具体的关联都在XML中,所以HQL对具体是用什么数据库并不是很关心。

5.缓存机制比较

相同点:HibernateMybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓存方案,创建适配器来完全覆盖缓存行为。

不同点:Hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置是那种缓存。

MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。

两者比较:因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。

MyBatis在这一方面,使用二级缓存时需要特别小心。如果不能完全确定数据更新操作的波及范围,避免Cache的盲目使用。否则,脏数据的出现会给系统的正常运行带来很大的隐患。

6.总结:

HibernateMyBatis都可以是通过SessionFactoryBuiderXML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。

而MyBatis的优势是MyBatis可以进行更为细致的SQL优化,可以减少查询字段,并且容易掌握。

Hibernate的优势是DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值