●iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。于2010年6月16号被谷歌托管,改名为MyBatis。是一个基于SQL映射支持Java和·NET的持久层框架。
●iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。
相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。
●iBATIS 目前提供了三种语言实现的版本,
包括:Java、.NET以及Ruby。
●通常在如下场景和条件下,选择ibatis, 将更有助于发挥ibatis在持久层的优越性:
● 知道怎样操作10种以上的数据库
●可配置的caching(包括从属)
●支持DataSource、local transaction management和global transaction
●简单的XML配置文档
●支持Map, Collection, List和简单类型包装(如Integer, String)
●支持JavaBeans类(get/set 方法)
●支持复杂的对象映射(如populating lists, complex object models)
●对象模型从不完美(不需要修改)
●数据模型从不完美(不需要修改)
●你已经知道SQL,为什么还要学习其他东西
●所谓“半自动化”,可能理解上有点生涩。纵观目前主流的 ORM(对象关系映射),无论 Hibernate还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执行。
●使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的 Java对象,这一层与通过 Hibernate 实现 ORM 而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL 语句,而ibatis 则要求开发者编写具体的 SQL 语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以 SQL开发的工作量大和数据库移植性上差为代价,为系统设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,ibatis 的出现显得别具意义。
●Ibatis开发的准备工作:
●将Ibaits相关的jar包添加到工程的类路径下。
●Ibatis工程的主要配置文件为:
●Ibatis的总配置文件SqlMapConfig.xml。
●Ibatis的实体映射文件。
●“半自动化”的ibatis,却刚好解决了这个问题。这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM 实现而言,“全自动”ORM 实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行。而ibatis 的着力点,则在于POJO 与 SQL之间的映射关系。也就是说,ibatis并不会为程序员在运行期自动生成 SQL 执行。具体的 SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO。
●可能对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 hibernate、JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择。即使在持久层框架层出不穷的今天,iBatis 凭借着易学易用、轻巧灵活等特点,也仍然拥有一席之地。尤其对于擅长 SQL 的开发人员来说,iBatis 对 SQL 和存储过程的直接支持能够让他们在获得 iBatis 封装优势的同时而不丧失 SQL 调优的手段,这是 Hibernate/JPA 所无法比拟的。
●Mybatis实现了接口绑定,使用更加方便。