总体来说,iBatis的系统结构还是比较简单地,他主要完成以下两件事情。
- 根据JDBC规范建立与数据库的连接。
- 通过反射打通Java对象与数据库参数交互之间相互转化的关系。
iBatis的框架结构也是按照这种思想来组织类层次结构的,其实他是一种典型的交互式框架先期准备好交互的必要条件,然后根据一个交互的环境,在交互环境中还话分成会话,每次会话也有一个环境。当这些环境都准备好了以后,剩下的就是交换数据了。其实只要涉及网络通信,一般都会是类似的处理方式。
下图是iBatis框架的主要的类层次结构图。
在上图中左边的SqlMapClient接口主要定义了客户端的操作行为,包括select、insert、update和delete。而右边住哟啊定义当前客户端在当前线程中的执行环境。SqlMapSession可以共享使用,也可以自己创建,如果是自己创建的,在结束时必须调用关闭接口进行关闭。
当使用者持有了SqlMapClientImpl对象后,就可以使用iBatis来工作了。这里还要提到另外一个类SqlMapExecutorDelegate,从名字就可以看出这个类是执行代理类。这个类非常重要,因为他耦合了用户端的执行操作行为和执行的环境,他持有执行操作所需要的数据,同时管理着执行操作依赖的环境。所以他是一个强耦合的类,也可以看作一个工具类。