ssh,


 1.Struts(表示层)+Spring(业务层)+Hibernate(持久层) 

Struts:
Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。
在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)
Hibernate:
Hibernate是一个持久层框架,它只负责与关系数据库的操作。
Spring:
Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。

一,HIbernate框架问题

2.Hibernate缓存:

  session缓存:被称为Hibernate的第一级缓存,是内置的,不能被卸载的.由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存.


  SessionFactory缓存:被称为Hibernate的二级缓存,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题(经常性高并发的数据是不能放在二级缓里面  的),因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情况下,SessionFactory不会启用这个插件


3.Hibernate工作原理及为什么要用?
  原理:
    1. 读取并解析配置文件
    2. 读取并解析映射信息,创建SessionFactory
    3. 打开Sesssion
    4. 创建事务Transation
    5. 持久化操作
    6. 提交事务
    7. 关闭Session
    8. 关闭SesstionFactory


4.如何对hibernate进行优化?   


    1.在一对多,多对一的关系中要使用延迟加载机制.(需要哪个对象在加载)


  2.对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,所以在开发过程   中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。
 


 


5.Hibernate中对象有几种状态?


  1,瞬时状态: 刚刚new出来的对象,尚未持久化,还没有呗session关联,DB中也没有对象的记录


  2,持久化状态:跟session关联,在数据库中有对象的记录


  3,脱管态:由持久化对象转变过来,不再和session关联,在数据库中可能存在记录


6.Hibernate有哪几种查询数据的方式?


  3种:hql、条件查询QBC(QueryBy Criteria)、原生sql (通过createSQLQuery建立)


 


二:Spring框架面试问题:

1.spring工作机制?
  1.spring mvc请所有的请求都提交给DispatcherServlet,(前端控制器)它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
  2.DispatcherServlet查询一个或多个HandlerMapping,(处理映射)找到处理请求的Controller.
  3.DispatcherServlet请求提交到目标Controller
  4.Controller进行业务逻辑处理后,会返回一个ModelAndView
  5.Dispathcher查询一个或多个视图解析器,在匹配ModelAndView对象指定的视图对象
  6.视图对象负责渲染返回给客户端。


2、为什么要用Spring 
  1、Spring能很好的与各大框架进行集成
  2、创建对象时,如果我们不用spring需要用工厂模式来创建,这个spring相当于工厂模式已经帮我们做了创建对象的功能(IOC、依赖注入)。
  3、在用Hibernate的时候,如果不用spring每次都要写事务的提交代码,有了spring可以通过AOP帮助我们管理事务 
  4、面向切面编程(AOP)在要记录日志的时候添加一条记录后需要在数据里同时添加一条添加成功了或失败的记录,那么就可以用Spring的Aop来处理,虽然不用Aop也能做但是不用Spring的Aop就会写很多重复的代码。


3,介绍一下Spring的事务管理 
  事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。


4,什么是依赖注入,依赖注入的作用是什么? 
  IOC是一种思想,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,比如new一个对象,从而导致类与类之间高耦合,难于测试;有了IOC容器后,把创建和查找依赖对象的控制权交给了spring  容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。依赖注入的作用:减少类间耦合度,避免用new来创建对象


5.什么是AOP,AOP的作用是什么? 
  AOP,面向切面编程,就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中,比如事务管理、权限控制、日志记录、性能统计等。


  AOP的作用:
  AOP并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,使得系统更加健壮,可维护性更好。


6.spring依赖注入:依赖注入其实就是控制反转,它分为构造方法注入,set方法注入,接口注入,我们最常用的就是set方法


7.spring的事务:


  介绍一下Spring的事务管理:


  事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。
  这样可以防止出现脏数据,防止数据库数据出现问题。


 


三:Struts2框架面试问题


1.Struts的工作流程?


  1、客户端浏览器发出HTTP请求。


  2、根据web.xml配置,该请求被FilterDispatcher接收。


  3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。


  4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。


  5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。6、返回HTTP响应到客户端浏览器。


2.Struts1和Struts2的区别:


    1.Struts2体系结构与Struts1的体系结构有很大的差别,Struts1是使用ActionServlet做为其中心处理器,Struts2则使用一个拦截器(FilterDispatcher)做为其中心处理器


    2.struts1是侵入式的即依赖框架,使用了框架大量的API,struts2是非侵入式的。

相关内容

    暂无相关文章