- iBATIS框架源码剖析
- 任钢
- 1398字
- 2020-08-28 22:01:45
1.3 iBATIS的组件和实现的功能
iBATIS框架主要包含两类组件:SQL Map组件和DAO组件。
1.3.1 iBATIS的DAO组件
iBATIS DAO组件的主要功能是帮助开发人员基于DAO设计模式设计和开发Java EE应用程序。DAO框架的主要目标是抽象化应用程序的数据访问层和持久层的表示方式和位置,使它远离应用程序的业务逻辑。同时DAO框架允许在应用程序中定义负责数据中心操作的接口,使用DAO可以动态地配置应用程序,从而使用不同的持久性机制和隐藏持久性层的实现细节。例如,如果应用程序通过JDBC来获取持久性,则DAO框架的目标就是抽象Connection、PreparedStatement和ResultSet等类和接口的使用,并下移到持久层;如果应用程序使用get和post来获得和存储数据,则DAO框架的用途是实现抽象化类的使用,使它们远离应用程序的业务层。然后应用程序可以使用DAO接口在数据上执行操作,这样就可以从数据库、Web服务或其他任何数据源中获得数据。iBATIS DAO实现如图1-1所示。
图1-1 iBATIS DAO实现图
iBATIS DAO实现的目的如下:
① 为二次开发人员实现核心Java EE设计模式的DAO模式提供了一个基础平台。
② 抽象出数据访问方式,隐藏了实现细节;
③ 封装了多种ORM模型,屏蔽了持久层。使得iBATIS DAO支持iBATIS SQL Map、Hibernate、Apache Ojb、Toplink、JDBC和JTA。
④ 由于对数据库的操作都是由DAO代理实现的,这样可以使系统更具可维护性。
⑤ 当进行多种ORM模型组合时,不用修改代码。
⑥ 增强了缓存处理,提高了安全性。
1.3.2 iBATIS SQL Map组件
iBATIS SQL Map组件是iBATIS Database Layer框架的重要组成部分,是整个iBATIS Database Layer的核心所在。SQL Map能够大大减少访问数据库的代码。iBATIS SQL Map使用简单的XML配置文件将JavaBean、XML、Map映射成SQL语句,通过SQL语句的执行而获得Java Bean、XML、Map、List等对象。iBATIS SQL Map实现如图1-2所示。
图1-2 iBATIS SQL Map实现图
iBATIS SQL Map提供了一个简洁的框架。输入参数使用简单的XML配置文件映射成JDBC的查询对象(Statement)——用来绑定要执行的操作的对象,然后生成结果。iBATIS SQL Map的实现的功能如下。
① 该组件基于XML配置文件,实现底层数据操作的SQL可配置化,可以控制最终的数据操作方式,通过SQL的优化获得最佳的数据库执行效能,在系统设计上具有比较大的自由空间。这在SQL自动生成的“全自动化”ORM机制中是所难以实现的。
② SQL语句的输入和输出参数可以是基本类型的包装类和简单类(如Integer、String等),也可以是Map、JavaBean、XML文件等,还可以直接使用应用中更为复杂的类(例如值对象VO、数据传输对象DTO等)。
③ 可针对特定的数据库操作设置特定的Java属性/SQL字段列值映射。
④ 相对于其他ORM框架,SQL Map框架简单易学,且编程代码简练。
⑤ SQL Map所提供的架构简洁,能够用20%的代码实现80%的JDBC的功能,也就能够非常方便地实现数据持久层。
从图1-2中看到,可以把JavaBean、Map类型,原始变量和XML数据作为传入对象;通过配置文件载入映射文件;利用框架翻译转化成JDBC来访问数据库;执行结果可以是JavaBean、Map类型以及原始变量和XML数据。
iBATIS几个主要的特性如下。
① 能够管理对象持续性。JavaBean到数据库表的映射,以对象的方式存取数据。O/R Mapping的定义都是基于XML,具有很好的扩展性和通用性。
② 支持多种数据输入和输出类型,包括Java基本类型、JavaBean、Map、XML等。
③ 支持静态SQL语言、参数SQL语言和动态SQL语言。
④ 支持新增、修改、删除、查询和存储过程的操作。
⑤ 支持显式事务和隐式事务,支持JDBC、JTA和容器事务。
⑥ 允许用户使用定制的SQL来提高查询的性能,提供了多种SQL自动策略开关。
⑦ 提供了灵活的Cache缓冲机制,以及延迟加载、复合查询的策略,保证一般应用的性能不会低于相应的数据集应用。
⑧ 使用iBATIS框架可实现数据库平台无关性,可以随时切换开发及数据库发布平台,方便移植。这些数据库包括Oracle、MS SQL Server、MySQL等。