框架基础知识spring springmvc mybatis struts hibernate

原创 2015年11月18日 17:35:27

一、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本身提供的缓存机制不佳。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

spring+struts2+hibernate+mybatis

配置文件: pom.xml

SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别

SSH 和 SSM 的定义 本人经历过两种技术架构,分别是常说的 SSH 和 SSM ,SSH 在本科的时候老师就教过。SSM 则是去公司后用的比较多。现在我想将这两大阵营的技术做一下对比。由于...

完整使用SSM框架(Spring SpringMVC Mybatis)搭建web服务器实现登录功能

SSM框架搭建流程SSM框架Web程序的流程  http://www.linuxidc.com/Linux/2016-08/134273.htm上面链接总结的流程很好,但是该流程没有加入DAO这一层,...

基于现如今流行的SSM(spring springMVC mybatis mysql)框架的hrm人事管理系统后台实例

采用了注解的方式开发,一个简单的人事管理系统,包括文件下载上传,公告管理以及用户/职位/部门的增删改查等基本操作 写这篇博客的目的为了保存下来本项目,便于以后使用或查询,如有问题,请留言,博主会尽...

整合Spring SpringMvc Mybatis,搭建SSM框架

在Eclipse下创建Java Web项目所用到的jar包:http://download.csdn.net/detail/askycat/9753100 因为把所有代码都贴出来了,所以看起来有点长...
  • askycat
  • askycat
  • 2017年02月13日 11:29
  • 1069

SSM框架整合实例,包能用( Spring SpringMVC Mybatis )

要快速学习SSM框架,你需要一套学习曲线平滑的教程 1. 很快可以看到效果 SSM框架这种教程的,在百度或者git上一搜一大把,不过很遗憾,大部分你照着上面的流程做,是做不出来的,要么缺少包,要么...
  • sojan
  • sojan
  • 2017年04月26日 11:16
  • 1135

搭建ssm框架:Spring SpringMVC Mybatis

搭建ssm框架:Spring SpringMVC Mybatis 创建Web project 文件,取名为test 在项目名上右键--》MyEclipse-->>Add Spring Aapabili...

SSM框架Web程序的流程(Spring SpringMVC Mybatis)

持久层:DAO层(mapper)      DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,    DAO层的设计首先是设计DAO的接口,   然后在Spring...
  • zzy7075
  • zzy7075
  • 2017年03月02日 16:44
  • 325

Maven配置SSM(Spring SpringMVC Mybatis)框架 细到极致!一秒看懂

创建项目 首先确定已经安装Maven 如若没安装请查看 blog.csdn.net/extraordinarylife/article/details/52586620 安装Maven 右键开始创...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:框架基础知识spring springmvc mybatis struts hibernate
举报原因:
原因补充:

(最多只允许输入30个字)