《SSH总结面试题.docx》由会员分享,可在线阅读,更多相关《SSH总结面试题.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SSH总结面试题 张国良编辑 SSH面试题 版本1.0 1.struts1与struts2的区分 : 1、两者之间目前只出名字是一样的。 2、struts1是通过继承来实现相关机制的。而struts2是通过接口方式来实现的。 3、在struts2中没有了ActionForm运用Action来代替原来struts1中的ActionForm和Action两者的功能。 4、Struts2比Struts1更加简单进行单元测试 5、线程平安 2.hibernate与iBATIS的区分 hibernate和ibatis都是长久层的ORM框架,hibernate是全自动化的,而ibatis是半自动化的。 为
2、什么这样说呢?因为hibernate把我们要用到的增、删、改的SQL语句都封装了,我们不须要再自己手动写,干脆调用即可, 所以称它全自动。而对于ibatis,全部的SQL语句都要我们自己来手写,所以称它为半自动化的框架,就等于是一个O/R Mapping 解决方案.有了这框架,只要配置下映射文件,就不须要手写sql语句了.Hibernate是全自动化的,可以说O/R做的相当全面了. iBateis和Hibernate相比,iBatis最大的特点就是小巧,上手很快。假如你不须要太多困难的功能,iBatis是能满意你的要求又足 够敏捷的最简洁的解决方案 3、hibernate的优化(项目) 1.运
3、用双向一对多关联,不运用单向一对多 2.敏捷运用单向一对多关联 3.不用一对一,用多对一取代 4.配置对象缓存,不运用集合缓存 5.一对多集合运用Bag,多对多集合运用Set 6.继承类运用显式多态 7.表字段要少,表关联不要怕多,有二级缓存撑腰 4、hibernate中seion与seionfactory的联系,分别什么时候用 seionFactory、seion都是由hibernate框架生成的,其中seionFactory包括了数据库配置和映射关系等资源,一个项目中只能生成一个seionFactory实例。因此seionFactory被设计成线程平安的。seion是对对象进行操作并映射至
4、对应的数据库表中的,它由seionFactory生成,不支持多线程并发,因此它是非线程平安的。 5、hibernate中get和load的区分 1、它们都用来依据主键,查找相应的记录 2、load和get方法对缓存的应用不同,其中load和get都可以运用seion层的缓存,但是对于load可以应用二级缓存,而get无法运用 抛异样Null 张国良编辑 留意:criteria也是绑定seion的,即随着seion的产生而产生,随着seion的消亡而消亡。假如想重用criteria对象,必需运用DetechedCriteria对象,实现criteria和seion进行分别。 7、在项目中用hib
5、ernateORM框架与传统jdbc比较有什么优点 延迟加载: 延迟加载机制是为了避开一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正须要数据的时候,才真正执行数据加载操作。在Hibernate中供应了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还供应了对属性的延迟加载。 hibernate中lazy的运用 hibernate中lazy的运用 (2008-09-12 13:57:47) 标签:杂谈分类:hibernate hibernate中lazy的运用 lazy,延迟加载 Lazy的有效期:只有在seion打开的时候才有效;seion关闭后lazy就没效了。
6、 lazy策略可以用在: * 标签上:可以取值true/false * 标签上,可以取值true/false,这个特性须要类增加 * /等集合上,可以取值为true/false/extra * /等标签上,可以取值false/proxy/no-proxy 一、概念:即两者之间存在关联关系,那么在加载主对象的时候,对副对象的加载处理,是延迟或马上,比如说公司(主)-部门(副).二、分析 1.马上检索 实现方法:将属性的lazy设为false,即不延迟加载.注解是fetch = FetchType.EAGER. 检索方式:加载主对象的同时加载副对象信息,反之亦然. 优点:即使当前seion关闭,处
7、于游离状态,也能获得到关联对象. 缺点:执行的SQL太多,增加数据库压力,还可能加载一些不须要的对象,即奢侈时间,又奢侈缓存控件. 优先运用场合: a.在业务或程序中,须要马上访问关联对象时可以运用. b.运用二级缓存. 2.延迟检索 实现方法:将属性的lazy设为true,即延迟加载.注解是fetch = FetchType.LAZY. 检索方式:不马上检索与之关联的对象,但是会为关联对象创建一个代理对象,这个代理对象只初始化一个OID,只有这个代理对象的属性被访问时,才初始化该代理对象. 优点,缺点:与马上检索相反. 优先运用场合: a.一对多或多对多的关联运用. b.在程序中不须要马上访
8、问或者该关联的对象不须要访问的时候. 什么时候用延迟加载 例如:银行开户,一个人可以开多个帐户,一个帐户只能属于一个人,所以在用户类里包含一个帐户的集合,帐户类里包含一个用户类型,他们之间是一对多的关系. 如过你在查询的时候,通过用户查询是,假如只想查到用户就用(hibernate)默认的延迟加载,这样效率也高,假如你想把该用户的的全部帐户都一同查出来,那就须要马上加载了,这样一来假如一个用户对应的帐户比较多的话,他的效率是很低的. 设置加载方式一般有两种,一种是通过映射文件(lazy=false),另一种是通过程序的方式来实现的也很简洁. Struts2工作流程: Struts2: (1)客
9、户端提交一个HttpServletRequest恳求(.action或JSP页面)。 (2)恳求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等。 (3)FilterDispatcher是Struts2限制器的核心,它通常是过滤器链中的最终一个过滤器。 (4)恳求发到FilterDispatcher后,FilterDispatcher询问ActionMapper是否须要调用某个Action来处理这个Request(一般依据URL后缀是否为.action来推断)。 (5)假如ActionMapper确定须要调用某个Action,FilterDis
10、patcher则把恳求交到ActioProxy,由其进行处理。 (6)ActionProxy通过Configuration Manager(它会访问struts.xml)询问框架的配置文件,找到须要调用的Action类。 (7)ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(在调用之前会依据配置文 SSH总结面试题 面试题总结 面试总结跟面试题 面试题总结(举荐) ETC 面试题总结 社区面试题总结 Android面试题总结 面试题 面试题 面试题 本文来源:网络收集与整理,如有侵权,请联系作者删除,谢谢!第8页 共8页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页