欢迎来到天天文库
浏览记录
ID:22681832
大小:301.33 KB
页数:12页
时间:2018-10-30
《ibatis 框架主要的类层次结构》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、iBATIS框架主要的类层次结构总体来说iBATIS的系统结构还是比较简单的,它主要完成两件事情:1.根据JDBC规范建立与数据库的连接;2.通过反射打通Java对象与数据库参数交互之间相互转化关系。iBATIS的框架结构也是按照这种思想来组织类层次结构的,其实它是一种典型的交互式框架。先期准备好交互的必要条件,然后构建一个交互的环境,交互环境中还划分成会话,每次的会话也有一个环境。当这些环境都准备好了以后,剩下的就是交换数据了。其实涉及到网络通信,一般都会是类似的处理方式。图1是iBATIS框架的主要的类层次结构图:图1.iBATIS框架的主要的类层次
2、结构图上面的类图中左边SqlMapClient接口主要定义了客户端的操作行为包括select、insert、update、delete。而右边主要是定义了当前客户端在当前线程的执行环境。SqlMapSession可以共享使用,也可以自己创建,如果是自己创建在结束时必须要调用关闭接口关闭。当使用者持有了SqlMapClientImpl对象就可以使用iBATIS来工作了。这里还要提到另外一个类SqlMapExecutorDelegate这个类从名字就可以看出他是执行代理类。这个类非常重要,重要是因为他耦合了用户端的执行操作行为和执行的环境,他持有执行操作的所
3、需要的数据,同时提供管理着执行操作依赖的环境。所以他是一个强耦合的类,也可以看做是个工具类。回页首iBATIS框架的设计策略iBATIS主要的设计目的还是为了让我们执行SQL时对输入输出的数据管理更加方便,所以如何方便的让我们写出SQL和方便的获取SQL的执行结果才是iBATIS的核心竞争力。那么iBATIS是怎么实现它的核心竞争力的呢?iBATIS框架的一个重要组成部分就是其SqlMap配置文件,SqlMap配置文件的核心是Statement语句包括CIUD。iBATIS通过解析SqlMap配置文件得到所有的Statement执行语句,同时会形成Par
4、ameterMap、ResultMap两个对象用于处理参数和经过解析后交给数据库处理的Sql对象。这样除去数据库的连接,一条SQL的执行条件已经具备了。图2描述了Statement有关的类结构图:图2.Statement有关的类结构图图2给出了围绕SQL执行的基本的结构关系,但是还有一个关键的部分就是,如何定义SQL语句中的参数与Java对象之间的关系,这其中还涉及到Java类型到数据库类型的转换等一系列问题。数据的映射大体的过程是这样的:根据Statement中定义的SQL语句,解析出其中的参数,按照其出现的顺序保存在Map集合中,并按照Stateme
5、nt中定义的ParameterMap对象类型解析出参数的Java数据类型。并根据其数据类型构建TypeHandler对象,参数值的复制是通过DataExchange对象完成的。图3是参数映射相关的类结构图:图3.参数映射相关的类结构图图3是输入参数的映射结构情况,返回结果ResultMap的映射情况也是类似的。主要就是要解决SQL语句中的参数与返回结果的列名与Statement中定义的parameterClass和resultClass中属性的对应关系。回页首iBATIS框架的运行原理前面大体分析了iBATIS框架的主要类的结构,这里主要看一下这些类是如
6、何串联起来、如何工作的。图4描述了整个过程的主要执行步骤。图4.iBATIS运行的主要执行步骤上图中描述的SqlMapSession对象的创建和释放根据不同情况会有不同,因为SqlMapSession负责创建数据库的连接,包括对事务的管理,iBATIS对管理事务既可以自己管理也可以由外部管理,iBATIS自己管理是通过共享SqlMapSession对象实现的,多个Statement的执行时共享一个SqlMapSession实例,而且都是线程安全的。如果是外部程序管理就要自己控制SqlMapSession对象的生命周期。图5是通过Spring调用iBATI
7、S执行一个Statement的一个详细的时序图:图5.Spring调用iBATIS执行一个Statement的时序图(查看图5的清晰版本。)iBATIS的主要工作连接、交互,所以必须根据不同的交易成本设计不同的交易环境。回页首示例下面我们将根据一个具体的实例解析一个Statement如何完成映射的,我们用一个典型的查询语句看看Java对象中的数据时如何赋给SQL中的参数的,再看看SQL的查询结果是如何转成Java对象的。先看一下示例的部分代码和配置文件,完整的代码请看附件。Spring的applicationContext配置文件:清单1.applica
8、tionContext.xml
此文档下载收益归作者所有