【面试准备】Spring、SpringMVC、Struts2、MyBatis、Hibernate优缺点

优缺点:Spring、SpringMVC、Struts2、MyBatis、Hibernate

致自己的面试准备题,加入自己以及整合其他人分享的!

1. Spring的优缺点

优点:
1 低侵入式设计
2 独立于各种应用服务器
3 依赖注入的特性将组件关系透明化,降低了耦合性
4 面向切面的特性允许将通用任务进行集中化处理
5 与第三方框架 良好整合

缺点:
1 jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
2 Spring不支持分布式,这也是EJB仍然在用的原因之一

2. SpringMVC的优缺点

优点:
1 清晰地角色划分
2 灵活的配置功能
3 提供了大量的控制器接口和实现类
4 真正做到与View层的实现无关
5 国际化支持
6 面向接口编程

缺点:
1 Spring与MVC 的Servlet API 耦合,难以脱离容器独立运行
2 太过于细分,开发效率低
3 过度追求完美,有过度设计的危险

3. Struts2的优缺点

优点:
1 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。
2 丰富的标签库,大大提高了开发的效率。
3 Struts2提供丰富的拦截器实现。
4 通过配置文件,就可以掌握整个系统各个部分之间的关系。
5 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。
6 Struts2的可扩展性高.
7 面向切面编程的思想在Strut2中也有了很好的体现。

缺点:
1 校验还是感觉比较繁琐。
2 安全性有待提高。

4. MyBatis的优缺点

优点:
1 与JDBC相比,减少了50%以上的代码量。
2 MyBatis是最简单的持久化框架,小巧并且简单易学。
3 MyBatis灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,可重用。
4 提供XML标签,支持编写动态SQL语句(XML中使用if, else)。
5 提供映射标签,支持对象与数据库的ORM字段关系映射(在XML中配置映射关系,也可以使用注解)

缺点:
1 SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。
2 SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

5. Hibernate的优缺点

优点:
1 对JDBC访问数据库的代码做了封装,简化了数据访问层繁琐的重复性代码
2 映射的灵活性, 它支持各种关系数据库, 从一对一到多对多的各种复杂关系
3 非侵入性、移植性好
4 缓存机制,提供一级缓存和二级缓存

缺点:
1 无法对 SQL 进行优化
2 框架中使用ORM原则, 导致配置过于复杂
3 执行效率和原生的 JDBC 相比偏差:,特别是在批量数据处理的时候
4 不支持批量修改、删除

你可能感兴趣的:(面试题集)