基本信息
書名:軟體iBATIS框架的源碼剖析
作者:任鋼
出版社: 電子工業出版社
ISBN: 9787121108723
裝幀:平裝
頁碼: 510
開本: 16
中文:漢語
產品標識:asinB003R1ZCZW
內容簡介
《軟體iBATIS框架的源碼剖析》適用於軟體設計師、架構師和一些有較好Java基礎的開發人員,既可以作為軟體iBATIS的學習指南,也可以給軟體架構師在設計方面進行參考。軟體iBATIS是一種比較流行的ORM框架,《軟體iBATIS框架的源碼剖析》全面介紹其結構體系和分析其源程式代碼,該框架的核心包括兩個組件,一個是軟體iBATISDAO,另一個是軟體iBATISSQLMap。《軟體iBATIS框架的源碼剖析》分為三個部分,第一部分是介紹軟體iBATIS的一些基礎知識;第二部分是介紹軟體iBATISDAO的框架結構及其實現;第三部分是針對軟體iBATIS的底層平台軟體iBATISSQLMap進行分析。其中第三部分是主要內容:首先剖析了SQLMap是如何讀取配置信息的;其次說明了SQLMap引擎的實現,勾畫出軟體iBATISSQLMap的框架結構,描述其核心實現機制和主要實現步驟;再次說明SQLMap如何用來實現資料庫處理,包括事務管理、資料庫連線池,以及SQLMap中Mapping的實現,這也是軟體iBATIS不同於其他ORM框架的獨創性實現;最後就是一些常用的實現,如TypeHandler類型轉化和軟體iBATIS常用工具的實現。在源碼剖析過程中,《軟體iBATIS框架的源碼剖析》採用了代碼注釋、UML分析和設計、GoF設計模式抽象和歸類、代碼跟蹤和案例的講解和說明。其目的是讓讀者全方位地了解軟體iBATIS的實現框架和實現手段。一方面讓讀者理解開發者的思路,另一方面也是幫助讀者在實際工作中能套用這些策略、方法和編程技巧。
編輯推薦
《軟體iBATIS框架的源碼剖析》由電子工業出版社出版。
作者簡介
任鋼,軟體碩土,高級工程師,從事了十多年的企業級套用開發,是國家認證的系統分析師、信息項目管理師和系統架構設計師,在學術刊物上發表了近10篇論文,曾擔任多年的中軟創新公司的技術總監和部門總監等,現任文思創新公司的技術總監。
目錄
第一部分軟體iBATIS的基礎知識
第1章軟體iBATIS概述
第2章相關的技術背景和基礎知識
第3章安裝和配置軟體iBATIS源碼
第二部分軟體iBATISDAO框架源碼剖析
第4章軟體iBATISDAO體系結構和實現
第三部分軟體iBATIS的底層平台——軟體iBATISSQLMap的分析
第5章軟體iBATISSQLMap體系結構和剖析
第6章SQLMap配置信息的讀取
第7章SQLMap引擎實現框架
第8章SQLMap資料庫處理
第9章SQLMap中Mapping實現
第10章SQLMap快取管理和實現
第11章TypeHand1er類型轉化
第12章軟體iBATIS常用工具的實現
附錄一第4章dao-2.dtd
附錄二第5章Sq1MapConfig.xm1的DTD結構
附錄三第5章Sq1MapConfig.xm1的xsd結構
附錄四第5章Sq1MapMapping.xm1的DTD結構
附錄五第5章Sq1MapMapping.xm1的XSD結構
附錄六第11章JDBCTypesMappedtoJavaTypes
附錄七第11章JavaTypes
附錄七:MappedtoJDBCTypes
附錄八第11章JDBCTypesMappedtoJavaObject
附錄九第11章JavaObjectTypesMappedtoJDBCTypes
附錄十第11章JDBCTypesMappedtoDatabase-specificSQLTypes
參考文獻
序言
搞IT技術已經有十多年的歷史了,接觸Java語言也有一定的時間了。為什麼到現在才要寫這本書呢?幾年前我開發過一個ORM模型框架,當時的思路居然與軟體iBATIS框架有一些類似(可見英雄所見略同)。於是,為了更好地實現這個ORM框架,我仔細閱讀了軟體iBATIS框架的源碼。在閱讀過程中,由於軟體iBATIS框架代碼層層疊疊、峰迴路轉、跌宕起伏,為了理清框架的主要思路和核心實現方式、加快理解速度和加深理解深度,我用PowerDesigner畫了一些UML圖,並做了一些閱讀筆記和備忘錄。一個月下來,基本上從總體架構上了解了軟體iBATIS框架的實現。這時候閱讀筆記和備忘錄已大約積累了好幾萬字。我想,如果能把這些筆記和備忘錄進行系統化、簡單化、章節化的整理,就可以給更多軟體iBATIS愛好者使用。同樣,這些學習心得對軟體架構師、軟體開發工程師等都非常有價值,所謂它山之石,可以攻玉。於是,我決定寫一本關於軟體iBATIS框架的源碼剖析的書籍。而在實際操作中,我覺得在講述軟體iBATIS源碼的同時,已經涉及很多關於ORM的內容,也有一些Java的基礎處理和編程技巧,甚至還包括一些經典的設計模式。
在國內介紹和講述開源軟體的書可謂是琳琅滿目,不勝枚舉。但這些書基本上都歸納為套用型或工具型,更趨向於軟體的使用說明或使用指南之類。而且,在全球這么多開源框架代碼中,我國做出的貢獻還是非常少的。分析原因,主要是我們熱衷於拿來主義,直接就用,能解決問題就行。而對於源碼,也許只有在使用過程中遇到了障礙,為了解決問題才做一些源碼閱讀和分析,這也是國內許多人很少去分析開源框架源碼的原因,而且介紹開源軟體實現的書籍也是鳳毛麟角。我寫這本書的目的,就是希望在這方面能與大家多分享一些學習心得和體會。
對於開原始碼,能讀懂並搞明白是一回事。但是理解了原始碼,把這些東西用文字表述出來,讓別人也能理解卻是另一回事。我覺得後者的難度遠遠大於前者。當然,如果僅僅是簡單地介紹軟體iBATIS框架,我相信只要有幾句話就能說清楚。但是要把一個實現框架說得條理清晰、層次鮮明,這不僅僅要求有一定的技術背景,還要有文字語言的表達和掌控能力。我用一個月時間就基本上搞明白了軟體iBATIS框架的內容,但是要把它寫出來,的確非常頭疼。有的時候要非常細緻地去推敲,因為很多瑣碎的細節決定了整個框架的核心,這需要有一定的耐心和抽象能力。同時閱讀和理解程式源碼是一種實踐性非常強的工作,所謂讀書破萬卷,下筆如有神,這是一個真理。但若閱讀並理解了幾十萬行程式代碼後,再來編寫程式代碼,那基本上就可以非常有章法並有一定的深度了。事實上,我國大學目前計算機教育的水平是基礎性質的,對於如何去閱讀源碼沒有相關的課程來進行講授。對於源碼的分析有什麼辦法、手段和策略,即如何把那些複雜的程式代碼用簡單的語言表達出來,讓別人能迅速地理解並掌握,我國的教育還是做得不夠的,也沒有專人或學者來搞這方面的研究。但筆者覺得這項工作是非常重要,而且也是很有意義的。事實上,每個開發人員和設計人員在實踐中都有自己的一套讀取和分析源碼方法。當然這也是仁者見仁、智者見智的事。我的方法和手段只是其中之一而已。所以說我在編寫這本書時對源碼的剖析只是做了一些非常粗淺但是有意義的嘗試,以試圖彌補國內軟體行業在這方面的缺陷。
文摘
1.面向對象分析的特徵 面向對象分析(Obiect Oriented Analyzing,簡稱OOA)的核心是對象的概念,它通過對所研究的事物進行高度的抽象得到對象,每個對象都真實地反映了它所對應的事物,事物的行為用其顯露的函式接口來表征,具有相同結構、相同操作並遵守相同約束規則的對象聚合成對象類。對象類間具有層次結構關係,處於上層的對象類稱為父類或基類,下層的類稱為子類。OOA方法具有抽象性、封裝性、繼承性、多態性四大特點。
①抽象性(Abstract)
抽象是指強調實體的本質、內在的屬性。在系統開發中,抽象指的是在決定如何實現對象之前,對對象的意義和行為進行概括。使用抽象可以儘可能避免過早考慮一些細節。類實現了對象的數據(即狀態)和行為的抽象。同時抽象忽略一個主題中與當前目標無關的那些方面,以便充分地注意與當前目標有關的方面.抽象包括兩個方面:一是過程抽象,二是數據抽象。過程抽象是指任何一個明確定義功能的操作都可被使用者當作單個實體看待,儘管這個操作實際上可能由一系列更低級的操作來完成。數據抽象定義了數據類型和施加於該類型對象上的操作,並限定了對象的值只能通過使用這些操作進行修改和觀察。
②繼承性(Inheritance)
繼承是一種聯結類的層次模型,能直接獲得已有的特性而不必重新定義,並且允許和鼓勵類的重用。它提供了一種明確表述共性的方法,在定義一種新的對象時,只需指明它具有哪些類定義以外的新特性,而不必定義新對象的全部特性,保證了軟體的可重用性,使對象之間具有傳遞作用,子類能繼承各層父類的全部語義特性。也就是說,一個類的數據和方法可以傳給另一個類,對象的一個新類可以從現有的類中派生,這個過程稱為類繼承,它是面向對象語言中可重複使用的基礎。派生類繼承了原始類(基類)的特性,同時可以修改或增加新的特性。這體現了一般和特殊的關係。繼承性很好地解決了軟體的可重用性問題,有利於提高軟體的開發效率。
③封裝性(Encapsulation) 封裝是面向對象的特徵之一,是對象和類概念的主要特性。封裝是把過程和數據包裝起來,實現信息的隱蔽,禁止其他對象直接訪問對象的內部狀態,保證了對單元數據的封裝和隱藏,使得每個單元對外部都有清晰的邊界,我們只看到封裝界面的信息,對數據的訪問只能通過已定義的界面。具體地說,封裝就是隱藏信息,就好比我們會操作電腦,無須知道電腦內部結構的組成。封裝保證了模組具有較好的獨立性,使得程式維護修改較為容易。由於數據和代碼封裝在對象中,不易破壞,封裝的對象保證系統模組化不會互相影響。
封裝性是保證軟體部件具有優良模組性的基礎。面向對象的類是封裝良好的模組,類定義將其說明(用戶可見的外部接口)與實現(用戶不可見的內部實現)顯式地分開,其內部實現按其具體定義的作用域提供保護.對象是封裝的最基本單位。封裝防止程式相互依賴性而帶來的變動影響。面向對象的封裝比傳統語言的封裝更為清晰、更為有力。