iBATIS是一种Data Mapper,Data Mapper是:一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身相独立。所以说,Mapper是在两个独立对象间建立通信关系的一种对象。
iBATIS是一种“半自动化”的ORM实现,说明下“全自动化”和“半自动化”在实现ORM模式上的区别。
Hibernate和Apache OJB都是对数据库结构提供了较为完善的封装。提供了从POJO(plain Old Java Object 普通Java对象)到数据库表的全套映射机制。软件开发人员往往只要定义好了POJO到数据库表的映射关系,即可通过Hibernate或者OJB提供的方法完成持久层操作,软件开发人员甚至不需要对SQL的熟练掌握。Hibernate和Apache OJB会根据指定的存储逻辑,自动生成对应的SQL并调用JDBC接口去执行。我们把这种模式成为“全自动化”模式。
“半自动化”ORM框架式相对上述提到的Hibernate等提供了全面的数据库封装机制的“全自己动化”ORM实现而言,半自动ORM框架重点在于POJO与SQL之间的映射关系。也就是开发人员自己编写SQL语句,通过映射配置文件,讲SQL所需的参数,以及返回的结果字段映射到指定的POJO。这些过程全是手工来操作。iBATIS就属于“半自动化”ORM。
通常实现ORM框架一般包括以下四部分:
- 对映射类进行CRUD(新增、查询、修改和删除)操作的API
- 规定Object与relational之间的映射规则,一般采用metadata进行表示。
- 规定类和类属性相关的查询规则
- 实现ORM中对数据库的事务管理