開發 Java 網頁主流框架
本篇主要說明為什麼要使用框架,以及目前市場上常見的開發架構,順便紀錄當時學習開發 Java 開發 API 遇到的各種困惑,希望藉由此篇文章弄懂概念,若有不對的地方還請留言賜教。
市面上常見的 Java 框架很多,諸如目前最火熱的 Spring Cloud 或 Spring boot ,又或者是傳統常見的 SSH 或者 SSM ,這些東西到底是什麼?下述讓我們來逐一說明吧!
對於框架的比較可以先參考 Java Web層框架比較—— JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket 不過這篇文章距今也有段時間,目前 Java 世界中還是以 Spring 作為領頭羊,後續也將以 Spring boot 進行開發,不過還是先讓我們理解一切整個發展的歷史和架構囉!
三層結構
傳統 Java Web應用程序是採用JSP+Servlet+Javabean來實現的,這種模式實現了最基本的MVC分層,使的程序結構分為幾層,有負責前臺展示的 JSP、負責流程邏輯控制的Servlet以及負責數據封裝的Javabean。但是這種結構仍然存在問題:如JSP頁面中需要使用符號嵌入很多的 Java代碼,造成頁面結構混亂,Servlet 和 Javabean 負責了大量的跳轉和運算工作,耦合緊密,程序複用度低等等。因此才會發展出下列的結構:
SSH ( Struts + Spring + Hibernate )
Struts(表示層 )+ Spring(業務層)+ Hibernate(持久層)
SSM ( Spring MVC + Spring + Mybatis )
Spring MVC(表示層 )+ Spring(業務層)+ Mybatis(持久層)
Spring MVC:屬於SpringFrameWork的後續產品,分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行開發。
Spring:是一個輕量級的Java開發框架,它是為了解決企業應用開發的複雜性而創建的。Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。 簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。
MyBatis:是一個基於Java的持久層框架。MyBatis提供的持久層框架包括SQL Maps和Data Access Objects(DAO)它消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML 或註解用於配置和原始映射,將接口和 Java映射成數據庫中的記錄。
框架比較
Spring MVC VS Struts2
Hibernate VS MyBatis
Mybatis優勢
MyBatis可以進行更為細緻的SQL優化,可以減少查詢欄位。
MyBatis容易掌握,而Hibernate門檻較高。
Hibernate優勢
Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。
Hibernate對對象的維護和緩存要比MyBatis好,對增刪改查的對象的維護要方便。
Hibernate資料庫移植性很好,MyBatis的資料庫移植性不好,不同的資料庫需要寫不同SQL。
Hibernate有更好的二級緩存機制,可以使用第三方緩存。MyBatis本身提供的緩存機制不佳。
結語
在理解完所謂的SSH或者SSM三層結構後,相信我們已經具備基本程式開發的概念,接下來要介紹的就是近些年來在 Java 開發界最值得關注的框架 Spring boot ,可說是集合各種框架於一身的集大成者,底層的ORM框架或者是IoC框架及MVC概念,全部藉由一個框架搞定全部事情,自動化配置節省配置 XML 的時間。
Spring Boot
前面我們提到三層結構,其中每一層都有其負責作用的框架,往往我們在配置環境的時候,必須針對不同業務層使用不同框架必須做配置,配置往往就需要花上許多時間,其中還不乏解決套件彼此的相依性和衝突,因此 Spring Framework 誕生了,為解決應用程式開發的複雜度,Spring 團隊整合了上述所說的資料處理層套件到表現層套件,只需要透過簡單的 Spring boot starter 就能輕鬆 build 起一個應用,不再需要配置 Tomcat 或者是其他相關的 webserver 服務,此外採用自動配置的方式,完全可以拋棄傳統 XML 配置,讓程式開發人員能更專注的開發需求功能而減少配置所帶來的時間成本。
- 創建可以獨立運行的Spring應用。
- 直接嵌入Tomcat 或Jetty服務器,不需要部署WAR 文件。
- 提供推薦的基礎POM文件來簡化ApacheMaven 配置。
- 儘可能的根據項目依賴來自動配置Spring框架。
- 提供可以直接在生產環境中使用的功能,如性能指標、應用資訊和應用健康檢查。
- 沒有代碼生成,也沒有XML 配置文件
相逢就是有緣,留下足跡吧!