SSH框架的一些面试题

来源:互联网 发布:指纹打卡机怎么导出数据 编辑:程序博客网 时间:2024/05/24 04:09
1、Hibernate


|-为什么要用Hibernate?
Hibernate对JDBC访问操作数据库的很多重复代码进行了封装,简化了DAO层的开发;Hibernate使用了反射机制来实现透明性,是一个轻量级框架,是一个优秀的ORM实现.}
|-工作原理?
读取配置文件的映射信息,创建SessionFactory;
打开Sessio;
创建事务transaction;
关闭Session和SessionFactory;
|-Hibernate如何实现延迟加载?
Hibernate在查询数据的时候,数据其实并不在内存当中,只有当程序真的去操作数据的时候,才把数据对象加载进内存,这样可以实现延迟加载,节省内存开销.
|-Hibernate的缓存机制?
首先,what can cache do?


缓存是位于应用程序和物理数据源之间的,用于存放数据的内存区域,目的是为了减少程序对物理数据源的访问次数,提高程序的运行性能.Hibernate在查询数据的时候,先去缓存中查找,若存在则直接读取,否则就去检索物理数据源,所以我们可以把常用的数据先加载到缓存,这样就可以减少程序对物理数据源的访问次数.


Hibernate有两级缓存机制,其中一级缓存又称“session缓存”,它是Hibernate内置的,它的缓存范围是事务级缓存(因为session的生命周期通常对应的是一个事务).


二级缓存也称“SessionFactory缓存”,该级缓存是可选的,由于SessionFactory的生命周期是整个过程,因此二级缓存范围是进程范围或者集群范围的缓存,有可能出现兵法问题,要采用适当的并发访问策略(为缓存的数据提供事务隔离级别).


所以一些很少被修改的数据或者偶尔允许并发不是很重要的的数据可以存到二级缓存中;而对于一些绝对不允许并发访问的数据eg财务数据,和常修改的数据就不适合放到二级缓存中.


2、Struts


|-工作原理?
·检索是否存在和请求符合的actionmapping对象,不存在则返回错误的请求路径.
·把客户端的表单数据保存到actionform对象中,根据配置信息验证actionform.
·根据配置信息,决定将请求转发给对应的action,调用execute().
·execute会返回一个actionforward对象,决定跳转到哪个页面.


3、Spring(后补)