MyBatis知多少(18)MyBatis系統

小型、簡單系統html

小型應用程序一般只涉及單個數據庫,只有一些至關簡單的用戶界面和領域模型。它的業務邏輯很是簡單,甚至對一些簡單的CRUD (Create, Read, Update, Delete:增查改)應用程序來講可能根本就不存在。MyBatis之因此很是適合於小型應用程序,有3個緣由。程序員

第一,MyBatis自己就很小而且簡單。它不須要服務器或者其餘任何類型的中間件。根本不須要任何額外的基礎設施。MyBatis也沒有任何第三方依賴。MyBatis的最簡安裝只需 要2個JAR文件,總計不過375KB。除了須要配置幾個SQL映射文件外,MyBatis不須要進行任何其餘安裝,所以只須要幾分鐘時間就能夠擁有一個可工做的持久層了。數據庫

第二,MyBatis不會對應用程序或者數據庫的現有設計強加任何影響。所以,若是你有一個小型系統,且己經部分實現或者甚至己經發布了,那麼依然能夠輕鬆地重構持久層以使用MyBatis。 由於MyBatis很簡單,因此它根本不會使得應用程序的架構過度複雜。而若是使用對象/關係映射工具或者代碼生成工具,因爲它們都對應用程序或數據庫的設計作了某些假設,所以它們不可能 對應用程序的架構毫無影響。編程

最後,只要有過軟件開發的經驗,相信你就不會懷疑,任何一個小軟件都幾乎不可避免地有 一天會成長爲一個大軟件。全部成功的軟件都有進一步成長的趨勢。這是一件好事,而咱們接下 來想說的就是,MyBatis一樣很是適合於大型系統,它甚至能夠擴展以知足企業級應用程序的須要。性能優化

MyBatis之於大型、企業級系統服務器

MyBatis當初就是爲企業級應用程序而設計的。最重要的是,MyBatis在這個領域比之其餘解決方案有着大量的優勢。MyBatis最初的建立者都只有從大型應用到企業級應用程序系統的開發經 驗。這些系統一般都涉及不止一個數據庫,且全部這些數據庫都是不可控的。以前中咱們討論了各類類型的數據庫,包括企業級數據庫、私有數據庫和遺留數據庫。建立MyBatis框架一個很重要的緣由就是針對這樣的數據庫。所以,MyBatis擁有許多適合於企業應用環境的特徵。架構

其實MyBatis適用於大型系統中的第一個緣由咱們已經在其餘地方說過了,不過這個緣由的確很重要,因此咱們再強調一下也不爲過:MyBatis沒有對數據庫模型或對象模型的設計作任何假設。 不論你的應用程序中這兩個模型之間是多麼不匹配,MyBatis都能適用。何況,MyBatis沒有對你的 企業級系統的架構作出任何假設。不論你對數據庫是根據業務功能縱向劃分,仍是按照技術橫向劃分,MyBatis都容許高效地處理數據並將它整合到面向對象的應用程序中去。框架

第二點,MyBatis的某些特徵使得它可以很是高效地處理大型數據集。MyBatis支持的行處理器使得它可以批處理超大型記錄集(一次一條記錄)。MyBatis也支持只獲取某個範圍 內的結果,這就使得你能夠只獲取那些你當前亟需的數據。例如,假設你有10 000條記錄,但只 須要其中的第500條〜第600條,那麼就能夠輕鬆地僅獲取這些記錄。MyBatis支持驅動程序提示, 使得執行這樣的操做很是高效。工具

最後一點,MyBatis容許你用多種方式創建從對象到數據庫的映射關係。一個企業級系統只以一種模式工做的狀況是很是少見的。許多企業級系統須要在白天執行事務性的功能,而在晚上執行批處理功能。MyBatis容許你將同一個類以多種方式映射,以保證每一種功能都能以最高效的方式執行。MyBatis一樣支持多種數據獲取策略。例如,能夠選擇對某些數據進行延遲加載,也能夠 將一個複雜的對象圖只用一條聯合查詢SQL語句就同時加載完畢,從而避免嚴重的性能問題。性能

咱們有充足的理由說明,你幾乎能夠在任何系統中使用MyBatis。正如前面所介紹的, 像MyBatis這樣一個框架可以使你的應用程序從架構級別上受益。本節就將討論這些益處以及使這些益處成爲可能的iBATIS特徵。

簡單性

MyBatis被普遍認爲是當今可用的最簡單的持久化框架之一。簡單性的理念根植於MyBatis開發團隊,它在MyBatis的全部開發目標中居於首位。這種簡單性的取得是由於MyBatis直接構建於JDBC 和SQL之上。MyBatis對於Java開發人員來講很是簡單,由於它除了不用編寫那麼多代碼外,與JDBC的工做機制很是相像。幾乎你知道的關於JDBC的一切都對iBATIS一樣適用。幾乎能夠認爲, MyBatis就是以XML的形式描述的JDBC代碼。也就是說,MyBatis擁有許多JDBC所沒有的架構級的優勢,咱們隨後就將討論這些優勢。MyBatis對於數據庫管理員以及SQL程序員來講也很是容易 理解。iBATIS配置文件幾乎人人都能讀懂,只要有SQL編程的經驗。

生產效率

任何一個優秀的框架,其基本目的都是使得框架的使用者可以得到更高的生產效率。通常狀況下,框架負責處理公共的任務,減小編寫重複的樣板代碼,以及解決複雜的架構級的問題。 MyBatis在給開發人員帶來更高的開發效率方面作得很是成功。在Java用戶組所作的—案例中, MyBatis減小了持久層大約62%的代碼量。之因此能減小如此多的代碼量, 究其緣由是開發人員再不須要編寫繁瑣的JDBC代碼了。SQL語句仍然是硬編碼的,不過就像你在前面小節中所看到的,SQL不是問題——問題在於JDBCAPI。

性能

性能這個話題無疑會引發框架開發人員、框架使用者以及商業軟件開發商之間的一場激烈爭論。事實是,從一個較低的層次來看這個問題,無疑全部的框架都會帶來必定的性能損失。通常 來講,若是你比較硬編碼的JDBC代碼和MyBatis代碼,作一個1 000 000次的for循環,就會發現 JDBC在性能上的確有一些優點。幸運的是,在現代應用程序開發中,以上這樣的for循環帶來的 性能損失並不重要。真正重要的是,你如何從數據庫中獲取數據,什麼時候獲取,獲取的頻率又是多少。例如,從數據庫中動態地獲取記錄的分頁查詢之因此能大大提升應用程序的性能就在於,你不會將潛在的成千上萬條記錄從數據庫中一次取出。一樣地,使用像延遲加載這樣的特徵能夠避免加載那些當前用例並不須要的數據。另外一方面,若是你肯定須要加載一份複雜的對象圖,涉及來自多個表的大量數據,那麼使用一條SQL語句就完成全部對象的加載顯然能夠大大提升效率。 MyBatis支持許多性能優化措施。就目前而言,最重要的是 要知道MyBatis老是能經過一種簡單的方式來配置和使用,其性能與JDBC至關,甚至更好。另外一 個須要重點考慮的問題就是,並非全部的JDBC代碼都是編寫良好的。JDBCAP很是複雜,編 寫正確的代碼須要很是當心。不幸的是,大量的JDBC代碼都編寫得至關糟糕,所以從較低層次上看甚至尚未MyBatis工做得好。

系列文章:

MyBatis知多少(1)

MyBatis知多少(2)

MyBatis知多少(3)

MyBatis知多少(4)MyBatis的優點

MyBatis知多少(5)業務對象模型

MyBatis知多少(6)表現層與業務邏輯層

MyBatis知多少(7)持久層

MyBatis知多少(8)關係型數據庫

MyBatis知多少(9)不一樣類型的數據庫

MyBatis知多少(10)應用程序數據庫

MyBatis知多少(11)企業數據庫

MyBatis知多少(12)私有數據庫

MyBatis知多少(13)MyBatis如何解決數據庫的常見問題

MyBatis知多少(14)分散的數據庫系統

MyBatis知多少(15)數據模型

MyBatis知多少(16)MyBatis映射

MyBatis知多少(17)MyBatis和JDBC

相關文章
相關標籤/搜索