本文分析iBatis框架的主要类是如何串联起来、如何工作的。下图描述了整个过程中的主要执行步骤。
在上图中描述的SqlMapSession对象的创建和释放根据不同的情况会有所不同,因为SqlMapSession负责创建数据库的连接,包括对事务的管理,iBatis既可以自己管理事务又可以由外部管理,iBatis自己管理是通过共享SqlMapSession对象实现的,多个Statement执行时共享一个SqlMapSession实例,而且线程都是安全的。如果是外部程序管理就要自己控制SqlMapSession对象的生命周期。
下图是通过Spring调用iBatis执行一个Statement的详细的时序图。
iBatis的主要工作是连接、交互,所以必须根据不同的交易成本设计不同的交易环境。