1:SqlMapClient为单例对象。客户端每次请求, SqlMapClient都要生成一个SqlMapSession对象的一个实例。在生成SqlMapSession实例过程中,SqlMapSession通过构造函数参数引用SqlMapClient单例对象,这样形成多个SqlMapSession都引用同一个SqlMapClient
2:SqlMapSession实例通过引用SqlMapClient获取了SqlMapExecutorDelegate单例对象,同时使用这个SqlMapExecutorDelegate对象构造出了另一个轻量级对象实例SessionScope,这样形成一个SqlMapSession对应一个SessionScope
3:SqlMapExecutorDelegate为单例对象,这是一个底层核心的类,客户端的所有的请求操作最终将委托给这个类相应的方法去执行。注意这个类没有实现任何有关操作的客户端接口,但里面却包含了所有的客户端操作对应的调用方法。这个类组合了ibatis核心类:
mappedStatements = new HashMap();//用于运行时statement映射 cacheModels = new HashMap();//缓存映射 resultMaps = new HashMap();//结果集映射 parameterMaps = new HashMap();//运行时参数映射 sqlExecutor = new SqlExecutor();//最底层真正的操作方法 typeHandlerFactory = new TypeHandlerFactory();//返回result映射使用 //在参数和返回结果的映射中进行数据转换 dataExchangeFactory = new DataExchangeFactory(typeHandlerFactory);