本文选自<iBATIS框架源码剖析>一书

搞IT技术已经有十多年的历史了,接触Java语言也有一定的时间了。为什么到现在才要写这本书呢?几年前我开发过一个ORM模型框架,当时的思路居然与iBATIS框架有一些类似(可见英雄所见略同)。于是,为了更好地实现这个ORM框架,我仔细阅读了iBATIS框架的源码。在阅读过程中,由于iBATIS框架代码层层叠叠、峰回路转、跌宕起伏,为了理清框架的主要思路和核心实现方式、加快理解速度和加深理解深度,我用PowerDesigner画了一些UML图,并做了一些阅读笔记和备忘录。一个月下来,基本上从总体架构上了解了iBATIS框架的实现。这时候阅读笔记和备忘录已大约积累了好几万字。我想,如果能把这些笔记和备忘录进行系统化、简单化、章节化的整理,就可以给更多iBATIS爱好者使用。同样,这些学习心得对软件架构师、软件开发工程师等都非常有价值,所谓它山之石,可以攻玉。于是,我决定写一本关于iBATIS框架源码剖析的书籍。而在实际操作中,我觉得在讲述iBATIS源码的同时,已经涉及很多关于ORM的内容,也有一些Java的基础处理和编程技巧,甚至还包括一些经典的设计模式。

在国内介绍和讲述开源软件的书可谓是琳琅满目,不胜枚举。但这些书基本上都归纳为应用型或工具型,更趋向于软件的使用说明或使用指南之类。而且,在全球这么多开源框架代码中,我国做出的贡献还是非常少的。分析原因,主要是我们热衷于拿来主义,直接就用,能解决问题就行。而对于源码,也许只有在使用过程中遇到了障碍,为了解决问题才做一些源码阅读和分析,这也是国内许多人很少去分析开源框架源码的原因,而且介绍开源软件实现的书籍也是凤毛麟角。我写这本书的目的,就是希望在这方面能与大家多分享一些学习心得和体会。

对于开源代码,能读懂并搞明白是一回事。但是理解了源代码,把这些东西用文字表述出来,让别人也能理解却是另一回事。我觉得后者的难度远远大于前者。当然,如果仅仅是简单地介绍iBATIS框架,我相信只要有几句话就能说清楚。但是要把一个实现框架说得条理清晰、层次鲜明,这不仅仅要求有一定的技术背景,还要有文字语言的表达和掌控能力。我用一个月时间就基本上搞明白了iBATIS框架的内容,但是要把它写出来,的确非常头疼。有的时候要非常细致地去推敲,因为很多琐碎的细节决定了整个框架的核心,这需要有一定的耐心和抽象能力。同时阅读和理解程序源码是一种实践性非常强的工作,所谓读书破万卷,下笔如有神,这是一个真理。但若阅读并理解了几十万行程序代码后,再来编写程序代码,那基本上就可以非常有章法并有一定的深度了。事实上,我国大学目前计算机教育的水平是基础性质的,对于如何去阅读源码没有相关的课程来进行讲授。对于源码的分析有什么办法、手段和策略,即如何把那些复杂的程序代码用简单的语言表达出来,让别人能迅速地理解并掌握,我国的教育还是做得不够的,也没有专人或学者来搞这方面的研究。但笔者觉得这项工作是非常重要,而且也是很有意义的。事实上,每个开发人员和设计人员在实践中都有自己的一套读取和分析源码方法。当然这也是仁者见仁、智者见智的事。我的方法和手段只是其中之一而已。所以说我在编写这本书时对源码的剖析只是做了一些非常粗浅但是有意义的尝试,以试图弥补国内软件行业在这方面的缺陷。

当然,阅读本书也要具备一定的基础知识,否则,有些术语和解释还是比较难以理解的。

我在本书的编写过程中花费了大量的时间。而且,这些工作都是在业余时间内完成的,每天都要照常上班,只有到了晚上或者节假日,才有闲暇写这些东西。一般技术人员都喜欢新鲜事物,如果说去阅读和理解开源代码,也许还有一些挑战性,大家可能都有兴趣去做这件事情,但是要把这些东西用文字表述出来并给别人讲述,则许多人就不太愿意干了,原因是这是一项非常枯燥的任务,写作的艰辛旁人是很难理解的。很高兴的是我还是坚持下来了,度过了无数个寂寞和孤单的晚上终于把这本书奉献给了读者。

在这期间,我要感谢我的家人对我的理解和支持。我要感谢我的妻子在这期间承担了全部的家务,同时也要感谢我女儿在我撰写书稿的时候没给我添太多的麻烦,她一直没有搞明白爸爸总是待在电脑前做什么。我要感谢我的父母,他们肯定不知道我写的内容,但是无论我做什么,有没有成绩,他们都是一如既往地给予鼓励。我把这里的一切都献给他们。

我还要感谢本书的编辑高洪霞和顾慧芳。没有她们耐心的指导和完善,这本书也许只是一个读书笔记,我也要感谢本书的策划编辑袁金敏,是她给我信心让我继续下去,否则这些资料只能是束之高阁。我还要感谢那些在编写本书做出贡献的所有人,他们都是默默无闻的后台工作者。

当然,由于笔者水平有限,书中的错误和缺点在所难免,希望读者能给予批评和指正。笔者的联系方式:rengang66@sina.com。

编 者

2009年12月于北京

书名:iBATIS框架源码剖析

作者:任 编著

ISBN 978-7-121-10872-3

出版日期:20106

定价:79.00(CD光盘1)

开本:16

页码:524

宣传语

      iBATIS——目前主流的ORM框架

      Java软件设计师、架构师案头必备参考用书

iBATIS是一种比较流行的ORM框架,本书全面介绍其结构体系和分析其源程序代码,该框架的核心包括两个组件,一个是iBATIS DAO,另一个是iBATIS SQL Map。

本书分为三个部分,第一部分是介绍iBATIS的一些基础知识;第二部分是介绍iBATIS DAO的框架结构及其实现;第三部分是针对iBATIS的底层平台iBATIS SQL Map进行分析。其中第三部分是主要内容:首先剖析了SQL Map是如何读取配置信息的;其次说明了SQL Map引擎的实现,勾画出iBATIS SQL Map的框架结构,描述其核心实现机制和主要实现步骤;再次说明SQL Map如何用来实现数据库处理,包括事务管理、数据库连接池,以及SQL Map中Mapping的实现,这也是iBATIS不同于其他ORM框架的独创性实现;最后就是一些常用的实现,如 TypeHandler类型转化和iBATIS常用工具的实现。

在源码剖析过程中,本书采用了代码注释、UML分析和设计、GoF设计模式抽象和归类、代码跟踪和案例的讲解和说明。其目的是让读者全方位地了解iBATIS的实现框架和实现手段。一方面让读者理解开发者的思路,另一方面也是帮助读者在实际工作中能应用这些策略、方法和编程技巧。

本书适用于软件设计师、架构师和一些有较好Java基础的开发人员,既可以作为iBATIS的学习指南,也可以给软件架构师在设计方面进行参考。

本书购买地址: 中国互动出版网

本书购买地址: 中国互动出版网

本书详细信息:http://www.broadview.com.cn/10872

更多图书信息:www.broadview.com.cn

想即时获取更多图书及活动资讯,赶快加入博文视点读者俱乐部 吧!

iBATIS框架源码剖析相关推荐

  1. 【java集合框架源码剖析系列】java源码剖析之ArrayList

    注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本. 本博客将从源码角度带领大家学习关于ArrayList的知识. 一ArrayList类的定义: public class Arr ...

  2. SpringDataJPA+Hibernate框架源码剖析(六)@PersistenceContext和@Autowired注入EntityManager的区别

    SpringDataJPA+Hibernate框架源码剖析系列文章: SpringDataJPA+Hibernate框架源码剖析(一)框架介绍 SpringDataJPA+Hibernate框架源码剖 ...

  3. 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法

    注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...

  4. Java集合框架源码剖析:LinkedHashSet 和 LinkedHashMap

    Java LinkedHashMap和HashMap有什么区别和联系?为什么LinkedHashMap会有着更快的迭代速度?LinkedHashSet跟LinkedHashMap有着怎样的内在联系?本 ...

  5. Mina2.0框架源码剖析(八)

    这篇来看看AbstractPollingIoConnector抽象类,它用于用于实现客户端连接的轮询策略.处理逻辑基本上和上一篇文章说的AbstractPollingIoAcceptor类似,它继承自 ...

  6. Spring框架AOP源码剖析

    今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西的源码剖析,作为多年的开发者,想必大家在面试的时候都被问过,你知道Spring框架AOP的底层实现机制吗 ...

  7. JS魔法堂:mmDeferred源码剖析

    一.前言 avalon.js的影响力愈发强劲,而作为子模块之一的mmDeferred必然成为异步调用模式学习之旅的又一站呢!本文将记录我对mmDeferred的认识,若有纰漏请各位指正,谢谢.项目请见 ...

  8. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...

    老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用 上一节我们描述了monkey的命令处理入口函数run是如何调用optionPro ...

  9. 老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 1...

    老李推荐:第3章3节<MonkeyRunner源码剖析>脚本编写示例: MonkeyImage API使用示例 在上一节的第一个"增加日记"的示例中,我们并没有看到日记 ...

  10. iOS开发之Masonry框架-源码解析

    Masonry是iOS在控件布局中经常使用的一个轻量级框架.Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...

最新文章

  1. FluxSink实例及解析
  2. Redis与Memcache的对比
  3. 设置 Confluence 6 日志
  4. 编程语言的发展趋势及未来方向(1):历史回顾及趋势概述
  5. js text 和 html,JS DOM innerText和textContent的区别
  6. ARMLinux下Alignment trap的一些测试
  7. Python中表达式int('0x10, 36)的值是。。。
  8. elasticsearch java对象 驼峰原则_2020年Java基础高频面试题汇总(1.4W字详细解析)...
  9. 判断zip,rar 文件是否加密
  10. KEIL编译时Warning: C3008W: splitting LDM/STM has no benefit的消除
  11. 计算机无法通过网络连接打印机共享,共享打印机无法连接,详细教您共享打印机无法连接怎么办...
  12. python对excel数据统计_用 python实现简单EXCEL数据统计
  13. threejs学习笔记:实现导入的动画gltf模型播放动画
  14. UVA11134_Fabled Rooks
  15. Vue一个案例引发「内容分发slot」的最全总结
  16. anaconda安装配置步骤、报错解决
  17. JavaScript Set
  18. 财务概念整理 入账、结账、销账、挂账、立账etc.
  19. iPhone分辨率及尺寸
  20. 完整版H5社交聊天平台源码[完整数据库+完整文档教程]

热门文章

  1. 第二阶段冲刺第六天站立会议
  2. WIN7下java环境的搭建
  3. Ansi,UTF8,Unicode,ASCII编码的差别
  4. [LeetCode] Spiral Matrix II
  5. [PeterDLax著泛函分析习题参考解答]第4章 Hahn-Bananch 定理的应用
  6. redis介绍及常见用法
  7. Node.js Unix/Linux NVM
  8. 关于AngularJS:
  9. 定义枚举类型时指定其使用的大小 (C++,C#)
  10. javascript操作cookie实例