struts2开发比较傻瓜一点,但是能力较弱,而且存在一些bug和漏洞(一些xss攻击不好处理,需要额外写过滤器),而且性能较差,一些对form表单提交的封装和一些页面语法的支持导致性能偏弱,spring-mvc 处理请求能力强大一些,性能高许多,而且spring-mvc能够更好的整合进入spring中,不像struts2还需要一些插件;所以综上所述,其实spring-mvc在综合能力上是远超struts2的,目前struts2基本以快被spring-mvc淘汰了。
mybatis和hiberante的比较,mybatis就是使用原生sql,而hiberante使用hql,之间hibernate存在hql转换sql的处理过程,从这个方面来说mybatis的整体性能优于hiberante,不过这不是决定性有事,因为这种性能差异微乎其微,而且在高并发状态也不会体现出来(有预解析和sql缓存等等技术)。mybatis的主要优势在于容易上手和学习成本低,一般来说学会sql就能很快上手,而且因为使用原生sql,对于很多复杂逻辑处理和性能优化上处理比较容易处理,因为只要关注sql就可以了,和mybatis本身关系不大。而hibernate学习成本就高很多了,因为hiberante对orm是非常彻底的支持,还有一套自己的hql语法,所有的思路吧sql的二维表的关系型数据库变成了对象型的数据思路,对于hibernate开发人员的要求,不仅仅对sql知识理解要很高,而且对Hibernate本身知识要求也很高,而且对于关系型数据库二维表数据与对象型orm数据之间的转换逻辑也要非常的熟悉,再加之hiberante内部一些相关架构也要比较熟悉,例如方言,会话,事务等等,他们和数据库的这些东西都是有区别的。不过hiberante对于系统迁移的适应性上要高出很多,用Hibernate不用为数据库之间迁移伤太多脑筋,例如oracle迁mysql或者其它数据库。至于现在流行说法,说什么hiberante性能不及mybatis,是无稽之谈,Hibernate发展这么多年,如果还有所谓性能问题,早就完蛋了。如果说是大数据,或者高并发,这就不是hiberante的问题了,我只能说你不懂大数据,当数据量合并发上升到一定级别,关系型数据库就不适用了,这根hiberante根本就无关了,mybatis也同样用不了。