作者:王忠进
链接:https://www.zhihu.com/question/36032573/answer/140945219
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/36032573/answer/140945219
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
java web的进化历程大致如下:
开始:servlet
因为标签解耦:jsp
因为页面数据解耦:jsp+javabean
因为控制层解耦:jsp+servlet+javabean
因为控制层共用:jsp+struts
因为解耦数据库:jsp+struts+hibernate
因为解耦控制层和数据层:jsp+struts+spring+hibernate
因为界面和控制层解耦:jsp+struts2+spring+hibernate
因为struts2安全问题:jsp+springmvc+spring+hibernate
因为mybatis更能适应业务复杂性:jsp+springmvc+spring+mybatis
........
整个过程前期主要推动因素解耦,后期两次是因为安全和业务复杂性要求。
hibernate其实也可以用于复杂业务复杂sql,性能也可以比较高,但是这样的话对技能要求就比较高。其实不管是hibernate还是mybatis,都可以直接获取数据库的connection,对于数据很大性能要求又高的部分,直接用jdbc来操作,也不用封装为pojo。
我们用ssm框架主要是可以解决我们90%的问题,学习比较简单,培训机构多,招人比较容易。
但是不好的地方就是用spring后性能不好,特别是写数据库多时跟jsp+servlet+javabean比差不多有10倍性能差距,内存消耗也特别大,在高性能高并发的情况下就有点难了。当然了说阿里也用这个框架,那是因为读的多写的少,而且大量缓存大量机器支持的。
就我本人来讲,不是很喜欢spring这一套,性能低外,报个异常都不能直接报出错位置。
开始:servlet
因为标签解耦:jsp
因为页面数据解耦:jsp+javabean
因为控制层解耦:jsp+servlet+javabean
因为控制层共用:jsp+struts
因为解耦数据库:jsp+struts+hibernate
因为解耦控制层和数据层:jsp+struts+spring+hibernate
因为界面和控制层解耦:jsp+struts2+spring+hibernate
因为struts2安全问题:jsp+springmvc+spring+hibernate
因为mybatis更能适应业务复杂性:jsp+springmvc+spring+mybatis
........
整个过程前期主要推动因素解耦,后期两次是因为安全和业务复杂性要求。
hibernate其实也可以用于复杂业务复杂sql,性能也可以比较高,但是这样的话对技能要求就比较高。其实不管是hibernate还是mybatis,都可以直接获取数据库的connection,对于数据很大性能要求又高的部分,直接用jdbc来操作,也不用封装为pojo。
我们用ssm框架主要是可以解决我们90%的问题,学习比较简单,培训机构多,招人比较容易。
但是不好的地方就是用spring后性能不好,特别是写数据库多时跟jsp+servlet+javabean比差不多有10倍性能差距,内存消耗也特别大,在高性能高并发的情况下就有点难了。当然了说阿里也用这个框架,那是因为读的多写的少,而且大量缓存大量机器支持的。
就我本人来讲,不是很喜欢spring这一套,性能低外,报个异常都不能直接报出错位置。