官术网_书友最值得收藏!

推薦序

分離是為了更好的相聚

2013年,我在開源中國網站上認識了本書作者劉增輝,并和他多次探討過關于Java開源框架的種種技術問題。那段時間,我正在開源一款名為Smart Framework的輕量級Java Web 框架,當時我不敢奢望自己開源的框架會有多少人認可,但沒想到后來還真有不少朋友們為此框架提出了寶貴建議并做出了巨大貢獻。尤其是在數據持久層這塊,增輝給了我許多支持與幫助,讓我感受到開源帶給我的不僅是技術能力上的提升,更多的是讓自己感到快樂。

我了解到增輝對MyBatis的研究頗為深入,不僅對MyBatis的內核,甚至對于其擴展都能做到了然于心、游刃有余。他曾經也開源了許多MyBatis核心組件,幫助許多開發者提高了工作效率,而我正是這眾多開發者中的一位。

我不想占用這篇推薦序的寶貴篇幅為大家講解如何來使用 MyBatis,因為這本書中對MyBatis 的介紹遠比我講的更加詳細和深入。現在我只想和大家聊聊架構設計中的一個核心問題:關注點分離。因為這個問題同樣也是MyBatis框架需要解決的核心問題。

關注點分離

關注點分離所對應的英文是Separation of Concerns,簡稱SOC。它是最經典的架構設計原則之一,在許多架構設計中被廣泛使用。關注點分離原則為我們的架構設計提出了三點要求。

1.架構中需要變化的部分,一定要能夠非常清晰地被識別出來。

2.若架構中某部分發生變化,則該變化不會影響到其他部分。

3.若架構中某部分需要擴展,則該擴展也不會影響到其他部分。

架構能做到關注點分離,才能做到真正意義上的解耦,這是架構師們需要努力實現的目標。如果大家要問,關注點分離做得最有效的落地實踐是什么?我們首先能想到的就是“前后端分離”。

前后端分離

曾經我們開發Web應用程序時,對前端和后端的概念不太清晰,開發者們逐漸認為前端和后端有必要進行分離了,前端需要考慮界面展現與數據展現問題,后端需要考慮業務邏輯與數據邏輯問題。可見,前端和后端所關注的問題是完全不同的,應該在架構上將它們進行分離。此外,在團隊協作上也能將前端與后端這兩部分的工作進行分離,因此出現了前端工程師與后端工程師這兩個不同崗位。這樣分工絕不是偶然的,它不僅讓架構變得更加解耦,還能顯著地提升團隊的開發效率。

針對前端工程師而言,需要將界面展現與數據展現相分離;針對后端工程師而言,不僅要清晰地理解業務邏輯,善于將數據進行合理的建模,最終還要做到將業務邏輯與數據邏輯相分離。

業務邏輯與數據邏輯相分離

業務邏輯對于我們而言已經很清楚了,但數據邏輯包括哪些呢?最直接的就是一個個對應于數據庫中每張數據表的實體對象,它有一個很好聽的名字:數據訪問對象,即 Data Access Object,簡稱DAO。很明顯,這一層數據直接和底層數據庫打交道,我們將它們從業務邏輯中分離出來,并加以封裝。也就是說,沒必要為每一個 DAO 對象初始化的過程去編寫大量的代碼,這些代碼應該封裝到一個框架中。我們只需要編寫相應的 SQL 語句,并將這些 SQL 語句從業務代碼中分離出來,最終將執行SQL語句所得到的結果集映射到DAO對象中即可。

不知道大家對我剛剛提到的“關注點分離”有怎樣的理解。無論大家理解或深或淺,毫無疑問,這個問題都已成為架構中最核心的部分。

MyBatis就是這樣的框架——它能幫助我們將業務邏輯與數據邏輯相分離,讓開發應用程序的過程變得更加高效。究竟MyBatis中隱藏著怎樣的奧秘?不要急,這本書將為大家揭曉答案。

作者增輝停下開發的腳步,通過深思熟慮和細心總結,把動態的實踐靜止到了紙張上,為各位讀者悉心解讀 MyBatis 的方方面面。相信他創作這本書的過程亦如當初刻苦自學 MyBatis并在各大社區開源自己編寫的核心組件的過程,傾注了全部的熱情和心血。不忘初心,方得始終,希望各位讀者能夠喜歡這本書,并從中有所收獲。

《架構探險》作者、特贊科技CTO,黃勇

2017年5月

主站蜘蛛池模板: 巴东县| 平原县| 鸡西市| 股票| 资源县| 海晏县| 石家庄市| 贵溪市| 宾阳县| 都匀市| 渭南市| 伊通| 五家渠市| 元阳县| 从化市| 隆子县| 盈江县| 珲春市| 平定县| 体育| 称多县| 鹤壁市| 南汇区| 永康市| 梅河口市| 诸暨市| 长子县| 犍为县| 柘荣县| 怀来县| 理塘县| 友谊县| 安多县| 当涂县| 永善县| 宿迁市| 怀柔区| 富宁县| 博湖县| 永泰县| 什邡市|