開始: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。