广州千锋教育

千锋广州Java面试宝典之开源框架篇

2020年02月08日

千锋广州Java面试宝典之开源框架篇

 1. hibernate和mybatis的区别?

  相同点:

  1)都属于ORM框架

  2)都是对jdbc的包装

  3)都属于持久层的框架

  不同点:

  1)hibernate是面向对象的,mybatis是面向sql的;

  2)hibernate全自动的orm,mybatis是半自动的orm;

  3)hibernate查询映射实体对象必须全字段查询,mybatis可以不用;

  4)hibernate级联操作,mybatis则没有;

  5)hibernate编写hql查询数据库大大降低了对象和数据库的耦合性,mybatis提供动态sql,需要手写sql,与数据库之间的耦合度取决于程序员所写的sql的方法,所以hibernate的移植性要远大于mybatis。

  6)hibernate有方言夸数据库,mybatis依赖于具体的数据库。

  7)hibernate拥有完整的日志系统,mybatis则相对比较欠缺。

  2. MyBatis的优点?

  1、基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。

  2、与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;

  3、很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。

  4、能够与Spring很好的集成;

  5、提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。

  3.MyBatis框架的缺点?

  (1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。

  (2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

  4. SpringMVC工作流程?

  1、用户发送请求至前端控制器DispatcherServlet

  2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

  3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

  4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

  5、执行处理器(Controller,也叫后端控制器)。

  6、Controller执行完成返回ModelAndView

  7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

  8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器

  9、ViewReslover解析后返回具体View

  10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

  11、DispatcherServlet响应用户

  5.MyBatis框架使用的场合?

  (1)MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。

  (2)对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。

  6.Spring中beanFactory和ApplicationContext的联系和区别?

  BeanFactory是spring中较为原始的Factory,无法支持spring的许多插件,如AOP功能、Web应用等。

  ApplicationContext接口是通过BeanFactory接口派生而来的,除了具备BeanFactory接口的功能外,还具备资源访问、事件传播、国际化消息访问等功能。

  总体区别如下:

  1)使用ApplicationContext,配置bean默认配置是singleton,无论是否使用,都会被实例化。优点是预先加载,缺点是浪费内存;

  2)使用BeanFactory实例化对象时,配置的bean等到使用的时候才会被实例化。优点是节约内存,缺点是速度比较慢,多用于移动设备的开发;

  3)没有特殊要求的情况下,应该使用ApplicationContext完成,ApplicationContext可以实现BeanFactory所有可实现的功能,还具备其他更多的功能。

  7. SpringIOC注入的几种方式?

  构造器注入

  set方法注入

  接口注入

  8.拦截器与过滤器的区别?

  1、拦截器是基于java的反射机制的,而过滤器是基于函数回调

  2、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

  3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

  4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

  5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

  9. SpringIOC是什么?

  Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

  10. AOP有哪些实现方式?

  实现 AOP 的技术,主要分为两大类:

  静态代理 - 指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;

  编译时编织(特殊编译器实现)

  类加载时编织(特殊的类加载器实现)。

  动态代理 - 在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。

  JDK 动态代理、CGLIB

加微信咨询
邓老师 @千锋教育
微信号:156******31

专业解答各类课程问题、介绍师资和学校情况

微信咨询
相关资讯
学Java能从事哪些岗位 现在学习来得及吗 千锋广州“逆战班”火力全开,你不是一个人在战斗
相关课程