深入分析ibatis框架之系统架构与映射原理
ibatis通过把SQL Map将Java对象映射成SQL语句,将结果集再转化成Java对象。
ibatis框架主要的类层次结构
iBatis的作用:
- 根据JDBC规范建立与数据库的连接
- 通过反射打通Java对象与数据库参数交互之间相互转化的关系
ibatis框架的主要的类层次结构图
SqlMapClient接口定义了客户端的select、insert、update和delete操作
ibatis框架的设计策略
iBatis设计的主要目的是为了让我们执行SQL时对输入输出的数据的管理更加方便
数据映射大体过程:根据Statement中定义的SQL语句,解析出其中的参数,并照其出现的顺序保存在Map集合中,并按照Statement中定义的ParameterMap对象解析出参数的Java数据类型,根据其数据类型构建TypeHandler对象,参数值的复制是通过DateExchange对象完成的。
iBatis框架的运行原理
SQLMapSession负责创建数据库的连接,包括对事务的管理
- ibatis自己管理是通过共享SQLMapSession对象实现的,多个Statement执行时共享一个SQLMapSession实例,而且线程安全的
- 外部程序管理就要自己控制SQLMapSession对象的生命周期
简单工厂模式
简单工厂可以理解成是一个模子,结构图如下
- Product:抽象产品角色,定义了产品的通用属性,相当于模子,它定义了一些功能,功能的实现需要子类去完成
- ConcreteProduct:具体产品角色,他实现了抽象产品所定义的功能,每一个ConcreteProduct相当于一个产品种类
- SimpleFactory:工厂模式类,由他负责创建具体的产品,它根据客户的要求来生产具体的产品,但是这个产品都具有符合抽象产品定义的功能
iBatis中使用简单工厂模式
com.iBatis.aplmap.engine.exchange.DateExchangeFactory类使用的就是简单工厂模式
工厂模式
简单工厂是指定特定属性生产不同商品,工厂是根据不同工厂决定不同产品
- Product:抽象产品角色,定义了产品的通用属性,相当于模子,它定义了一些功能,功能的实现需要子类去完成
- ConcreteProduct:具体产品角色,他实现了抽象产品所定义的功能,每一个ConcreteProduct相当于一个产品种类
- Factory:抽象工厂角色,定义所有工厂都应该具有的功能
- ConcreteFactory:具体工厂模式类,实现了抽象工厂定义的所有功能,负责创建具体的产品,根据这个工厂的具体实现来声场具体的产品,但是这个产品也都符合抽象产品类定义的功能
iBatis中的go工厂模式实例、
iBatis中的资源加载就是工厂模式,对应的类是DataSOurceFactory,就是抽象工厂模式