黑马程序员技术交流社区

标题: 企业面试问题-ssh框架篇 [打印本页]

作者: 播妞    时间: 2017-7-25 15:53
标题: 企业面试问题-ssh框架篇
SSH框架阶段SSH的优缺点,使用场景?
Hibernate优点:
(1) 对象/关系数据库映射(ORM)
它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想
(2) 透明持久化(persistent)
带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打交道的数据传输对象。)      
(3) 事务Transaction(org.hibernate.Transaction)
应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session之内可
能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的。
(4) 它没有侵入性,即所谓的轻量级框架
(5) 移植性会很好
(6) 缓存机制,提供一级缓存和二级缓存
(7) 简洁的HQL编程
Hibernate缺点:
(1)  Hibernate在批量数据处理时有弱势
(2) 针对单一对象简单的增删查改,适合于Hibernate,而对于批量的修改,删除,不适合用Hibernate,这也是OR框架的弱点;要使用数据库的特定优化机制的时候,不适合用
(3) 优化策略应用不当会导致大量的资源消耗.
Spring优缺点
它是一个开源的项目,而且目前非常活跃;它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的 接口,采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等
spring优点:
a. Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。
b. Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系统的可测试性和面向对象的程度。
c. 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性。Inversion of Control的使用(在下面讨论)帮助完成了这种简化。
d. 通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。
e. Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。
f. 使用Spring构建的应用程序易于单元测试。
g. Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。
h. Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。
i. Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品(如Hibernate)。
Spring确实使你能通过最简单可行的解决办法来解决你的问题。而这是有有很大价值的。

Spring缺点:
无明显缺点

Struts2 的优点:
Struts2比Struts1已经有了很大的进步,优点很多,其中主要两个是:对框架API和ServletAPI的依赖减少,可扩展性提高。
Struts2的Action可以实现框架提供的Action接口也可以不实现这个接口。实际上框架Strut2的Action的要求很低,只要一个类,包含一个无参的、返回值类型为String的方法就行。其实Struts2的Action就是一个POJO。如果用户写一个类实现框架提供的Action接口或者继承框架提供的ActionSupport类, 则可以利用框架中的其他一些功能。比如在,Action接口中定义了一些常量,这些常量通常作为返回值共处理方法调用。
由于Struts2的Action对框架API和Servlet API的依赖减少,因此可测程度大大提高。
Struts2的可扩展性提高了。Struts2的核心jar包中由一个struts-default.xml文件,在该文件中设置了一些默认的bean,resultType类型,默认拦截器栈等,所有这些默认设置,用户都可以利用配置文件更改,可以更改为自己开发的bean,resulttype等。
因此用户开发了插件的话只要很简单的配置就可以很容易的和Struts2框架融合,这实现了框架对插件的可插拔的特性。
面向切面编程的思想在Strut2中也有了很好的体现。最重要的体现就是拦截器的使用。拦截器就是一个一个的小功能单位,用户可以将这些拦截器合并成一个大的拦截器,这个合成的拦截器就像单独的拦截器一样,只要将它配置到一个、Action中就可以。


Struts2 的缺点:
在并发量比较大的场景中,.每次请求都要创建一个Action,并维护很长的调用链(至少18个拦截器+OGNL解析+Action+Result),资源消耗比较大.
使用场景
SSH对于中小型项目提供了一套完整的解决方案.在表关系相对简单,数据量不大,并发量不高的项目中,能够极大的提高开发效率.
表关系复杂或数据量比较大时,可以使用Mybatis替换Hibernate.
并发量很高时可以使用SpringMVC替换struts

struts2的原理?


在Struts2框架中的处理大概分为以下几个步骤 :

1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着StrutsPrepareAndExecuteFilter被调用,StrutsPrepareAndExecuteFilter询问ActionMapper来解析和判断该次请求是否需要由struts2框架来处理.
4 如果ActionMapper判断需要struts2来处理请求,StrutsPrepareAndExecuteFilter会把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager加载框架的配置文件,找到需要调用的Action以及拦截器配置信息
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果配置。根据配置找到对应的Result处理类来处理结果集.大多数情况输出会交由模版语言(JSP,FreeMarker)完成输出内容拼装


简单介绍一下你对hibernate的理解?
答:hibernate框架是一个ORM的持久层框架,ORM的含义是对象关系映射,简单理解就是通过对象和关系型数据库之间建立映射信息,以后再操作对象就相当于操作数据库了。hibernate框架是对JDBC进行了轻量级的封装,可以更方便简单的对数据库完成增删改查的操作。同时也提供了查询的方式和查询的策略。例如HQL和QBC的查询方式等。还提供了缓存的策略,效率会更高。

Hibernate和mybatis有什么区别?
回帖查看更多答疑哦~

作者: bran_q    时间: 2017-8-2 12:05
我要去面试啦{:8_469:}
作者: bran_q    时间: 2017-8-2 15:56
这些概念性的我还是没有理解透彻
作者: bran_q    时间: 2017-8-2 15:59
这些概念性的我还是没有理解透彻
作者: lvshen9    时间: 2017-8-6 19:24
xiexiefenxiang
作者: Port    时间: 2017-8-7 01:19
66666666666666666666666
作者: isAction    时间: 2017-8-9 12:35
支持一下哟。。。
作者: 闫军锋    时间: 2017-8-10 14:20
bcvvbvbbvvbvb
作者: xingzheanye    时间: 2017-8-10 14:24
查看更多
作者: 自然醒199010    时间: 2017-8-10 22:56
谢谢分享!
作者: jflsdajlfj    时间: 2017-8-12 14:52
11111111111111111111
作者: 晨丶    时间: 2017-8-12 16:58
学习学习学习学习学习
作者: 齐天大圣老侯    时间: 2017-8-16 21:32
为面试做个准备

作者: czbk184    时间: 2017-8-17 12:41
学习学习

作者: 初学者大白菜    时间: 2017-8-17 16:45
感谢分享
作者: 谢炮    时间: 2017-8-17 18:53
这些概念性的我还是没有理解透彻
作者: yiguixia    时间: 2017-9-11 16:02
谢谢楼主
作者: zhang888    时间: 2017-9-11 16:51
66666666666
作者: cleanlove    时间: 2017-12-10 22:08
: 企业面试问题-ssh框架篇 [修改]
作者: potterliquan    时间: 2017-12-16 22:02
辅导教师待会过去后;
作者: Boboca    时间: 2017-12-18 03:17
好好学习
作者: 0o依然想你o0    时间: 2018-1-10 09:12

作者: addddddddddddd    时间: 2018-1-10 12:29
dasssssssssssssssssssssssss
作者: 15231589150    时间: 2018-1-10 23:03
The First Time.
作者: s1025670075    时间: 2018-5-8 09:01
666666666666666666
作者: 越王剑    时间: 2019-3-6 00:16
看一看呀看一看
作者: 小琦    时间: 2019-3-6 14:29
你好我要下载
作者: wwwgzx111    时间: 2019-3-6 15:30
66666666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2