丁妍 翟高粵
摘 要:SSM是當(dāng)今流行的Java Web開發(fā)框架,它能解決大部分企業(yè)應(yīng)用開發(fā)的復(fù)雜性問題。對于Java開發(fā)人員來說,掌握企業(yè)應(yīng)用框架開發(fā)的基本方法,是進行編寫應(yīng)用軟件的必備技能之一。本文主要介紹SSM框架開發(fā)的基本方法及應(yīng)用,并通過一個實例說明SSM框架編程的基本使用方法,從而感受SSM編程的便利。
關(guān)鍵詞:SSM框架;MySQL;JDBC
中圖分類號:TP183? ?文獻標(biāo)識碼:A
一、引言
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內(nèi)容),常作為數(shù)據(jù)源較簡單的web項目的框架。Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實體類的構(gòu)造方法來實例化對象。也可以稱之為項目中的粘合劑。SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔(dān)中介或是前臺這樣的職責(zé),將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應(yīng)請求所執(zhí)行的操作。SpringMVC相當(dāng)于SSH框架中struts。mybatis是對jdbc的封裝,它讓數(shù)據(jù)庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關(guān)聯(lián)到各實體類的Mapper文件,Mapper文件中配置了每個類對數(shù)據(jù)庫所需進行的sql語句映射。在每次與數(shù)據(jù)庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執(zhí)行sql命令。頁面發(fā)送請求給控制器,控制器調(diào)用業(yè)務(wù)層處理邏輯,邏輯層向持久層發(fā)送請求,持久層與數(shù)據(jù)庫交互,后將結(jié)果返回給業(yè)務(wù)層,業(yè)務(wù)層將處理邏輯發(fā)送給控制器,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)。
二、相關(guān)理論
(一)SpringJDBC
Spring JDBC是對傳統(tǒng)JDBC訪問的簡單封裝,使用Spring JDBC之后,可以省去一部分以前需要開發(fā)人員編寫的訪問數(shù)據(jù)的底層操作,比如注冊驅(qū)動、獲得連接、執(zhí)行查詢等等。Spring JDBC相當(dāng)于一個簡單封裝的持久層框架,原始功能比較簡單,使用起來也比較簡單,如果開發(fā)一些小型項目,是可以直接使用的,如果是一些大型項目,由于它并不是真正的orm框架,因此需要自己封裝一些工具,如果有能力封裝的話,那么Spring JDBC用起來是非常舒服的,性能也很強,不比mybatis差。
(二)MySQL
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。
MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型和大型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。
MySQL和Spring JDBC進行配合使用,兼容性好,開發(fā)效率高。
三、SSM框架詳解
(一)MyBatic
MyBatis是當(dāng)前主流的Java持久層框架之一,它是一種ORM框架,它的性能優(yōu)異,具有高度的靈活性、可優(yōu)化性和易于維護等特點,受到了廣大互聯(lián)網(wǎng)企業(yè)的青睞,是目前大型互聯(lián)網(wǎng)項目的首選框架。MyBatis 的主要思想是將程序中的大量 SQL 語句剝離出來,使用 XML 文件或注解的方式實現(xiàn) SQL 的靈活配置,將 SQL 語句與程序代碼分離,在不修改程序代碼的情況下,直接在配置文件中修改 SQL 語句。
MyBatis框架也被稱為ORM框架。所謂ORM就是一種為了解決面向?qū)ο笈c關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)類型不匹配的技術(shù),它通過描述Java對象與數(shù)據(jù)庫表之間的映射關(guān)系,自動將Java應(yīng)用程序中的對象持久化到關(guān)系型數(shù)據(jù)庫的表中。ORM框架的工作原理如圖1所示。
從圖1可以看出,使用ORM框架后,應(yīng)用程序不再直接訪問底層數(shù)據(jù)庫,而是以面向?qū)ο蟮姆绞絹聿僮鞒志没瘜ο?,而ORM框架則會通過映射關(guān)系將這些面向?qū)ο蟮牟僮鬓D(zhuǎn)換成底層的SQL操作。另外,MyBatis還可以配置動態(tài)SQL并優(yōu)化SQL,可以通過配置決定SQL的映射規(guī)則,對于一些復(fù)雜的和需要優(yōu)化性能的項目來說,使用MyBatis更加合適。
(二)Spring
Spring是一個開源框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。
從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。
Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于Spring的特定類。
Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進了松耦合。當(dāng)應(yīng)用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創(chuàng)建或者查找依賴對象。而IoC與JNDI相反,它不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(auditing)和事務(wù)(transaction)管理)進行內(nèi)聚性的開發(fā)。應(yīng)用對象只實現(xiàn)完成業(yè)務(wù)邏輯。它們并不負責(zé)其它的系統(tǒng)級關(guān)注點,例如日志或事務(wù)支持。
Spring包含并管理應(yīng)用對象的配置和生命周期,在這個意義上它是一種容器,可以配置每個bean如何被創(chuàng)建。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。
Spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。
Spring的這些特征使開發(fā)人員能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。
(三)Spring MVC
Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構(gòu),從而在使用Spring進行WEB開發(fā)時,可以選擇使用Spring的Spring MVC框架或集成其他MVC開發(fā)框架,如Struts1,Struts 2等等。
Spring MVC Framework有這樣一些特點:它是基于組件技術(shù)的,全部的應(yīng)用對象,無論控制器和視圖,還是業(yè)務(wù)對象之類的都是java組件。并且和Spring提供的其他基礎(chǔ)結(jié)構(gòu)緊密集成。它不依賴于Servlet API(目標(biāo)雖是如此,但是在實現(xiàn)的時候確實是依賴于Servlet的)可以任意使用各種視圖技術(shù),而不僅僅局限于JSP支持各種請求資源的映射策略,它應(yīng)是易于擴展的。
四、結(jié)論
本文對企業(yè)應(yīng)用開發(fā)框架中使用的SSM進行理論、方法和步驟進行詳細說明。通過本文的學(xué)習(xí),讀者能夠?qū)W會使用SSM框架進行企業(yè)應(yīng)用開發(fā)的技術(shù)和方法,并能深切地體會到SSM框架進行編程的強大。
參考文獻:
[1]沃爾斯. Spring實戰(zhàn) [M]. 人民郵電出版社,2016.
[2]卡內(nèi)爾. Spring開發(fā)三劍客[M],人民郵電出版社, 2020.
[3] 陳恒等. Spring Boot從入門到實戰(zhàn)[M]. 清華大學(xué)出版社出版社,2020.
作者簡介:丁妍(2005.01—),女,現(xiàn)在蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院信息技術(shù)學(xué)院,研究方向:軟件開發(fā)。