`

iBatis “半自动”ORM

阅读更多

实现一、iBatis是什么?
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目,最初侧重于密码软件的开发,现在是一个基于Java的持久层框架,iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例,相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现,iBATIS需要开发人员自己来写sql语句,这可以增加了程序的灵活性,在一定程度上可以作为ORM的一种补充,程序设计人员应该结合自己的项目的实际情况,来选择使用不同的策略.
iBATIS和Hibernate都做了映射,但iBATIS是把实体类和sql语句之间建立了映射关系,这种策略可以允许开发人员自己来写合适的sql语句,而Hibernate在实体类和数据库之间建立了映射关系,sql对于开发人员是不可见的,对于那些数据量非常大的应用,无法去优化sql语句,所以在实际应用中,应该根据不同的应用场景,来选择适合自己的框架.
所谓“半自动”,可能理解上有点生涩,纵观目前主流的 ORM,无论 Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从 POJO 到数据库表的全套映射机制,程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 Hibernate或者 OJB 提供的方法完成持久层操作,程序员甚至不需要对 SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执行.

二、iBatis与Hibernate的比较
  大多数情况下(特别是对新项目,新系统的开发而言),这样的机制无往不利,大有一统天下的势头
但是,在一些特定的环境下,这种一站式的解决方案却未必灵光.
  在系统咨询工作过程中,常常遇到以下情况:
1. 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开.
  2. 开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现(就笔者工作所面向的金融行业而言,工商银行、中国银行、交通银行,都在开发规范中严格指定).
  3. 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标.
  面对这样的需求,再次举起 Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏……,说得未免有些凄凉,直接使用 JDBC进行数据库操作实际上也是不错的选择,只是拖沓的数据库访问代码,乏味的字段读取操作,令人厌烦,“半自动化”的ibatis,却刚好解决了这个问题,这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”,ORM 实现而言,“全自动”ORM 实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行;而ibatis 的着力点,则在于POJO 与 SQL之间的映射关系.也就是说,ibatis并不会为程序员在运行期自动生成 SQL 执行,具体的 SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO.
  使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现 ORM 而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL 语句,而ibatis 则要求开发者编写具体的 SQL 语句;
相对Hibernate等“全自动”ORM机制而言,ibatis 以 SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间,作为“全自动”ORM实现的一种有益补充,ibatis 的出现显得别具意义.

三、iBatis的优势和特点
1. iBatis优势 iBatis是一个混合性的解决方案,吸取了这些所有解决方案中最有价值的思想,并将他们融会贯通.
方案 相同的优点 解决的问题 proc 支持对proc 的直接调用,业务逻辑从数据库中分离出来,程序有更好的易植性,内联sql 允许sql以最自然的方式书写,没有字符串拼接,没有参数设置,没有结果获取,对应用程序的代码没有任何的影响;o/rm Ibatis有许多o/rm工具一样的特性,高速缓存,运行时生成代码,延迟加载等,可用于任意数据模型和对象模型的组合,javavBean或业务类,动态 sql Ibatis支持动态sql来处理查询,不要求sql被写成一堆字符串
2. iBatis的特点
o/rm通过java对和Db之间的映射,而Ibatis通过sql与数据库的映射,通过sql的查询参数和结果来和java对象映射,总结:(1)容易上手(2)生产效力高(3)性能好(4)分工明确(5)支持java,.net,ruby (6)开源

分享到:
评论

相关推荐

    ibatis.doc

    ibatis教程 相对Hibernate 和Apache OJB 等“一站式”ORM 解决方案而言,ibatis 是一种“半 自动化”的ORM 实现

    iBATIS 2.0 开发指南

    所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还是 Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全 套映射机制。程序员往往只需定义好了POJO 到数据库表...

    iBatis开发资料

    所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还是 Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全 套映射机制。程序员往往只需定义好了POJO 到数据库表...

    ibatis实现过程

    所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还是 Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全 套映射机制。程序员往往只需定义好了POJO 到数据库表...

    ibatis 开发指南

    所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还是 Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全 套映射机制。程序员往往只需定义好了POJO ...

    ibatis开发指南

     所谓“半自动”,可能理解上有点生涩。纵观目前主流的 ORM,无论 Hibernate 还是  Apache OJB,都对数据库结构提供了较为完整的封装,提供了从 POJO 到数据库表的全  套映射机制。程序员往往只需定义好了POJO 到...

    iBatis框架搭建用到的所有jar包

    所谓“半自动化”,可能理解上有点生涩。纵观目前主流的 ORM(对象关系映射),无论 Hibernate还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO到数据库表的全套映射机制。程序员往往只需定义好了...

    iBATIS技术教程PPT和代码.rar

    所谓“半自动”,可能理解上有点生涩。纵观目前主流的 ORM,无论 Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从 POJO 到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表...

    Spring数据库访问之iBatis

    相对于Hibernate等ORM框架的全自动SQL,那么iBatis则属于半自动化的ORM框架,我们需要编写SQL语句,由iBatis进行数据库访问,返回结果。而iBatis可以为我们做的更多,比如对查询结果的封装等等。虽然不如全自动SQL...

    ibatis 开发指南(pdf)

    所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM ,无论Hibernate 还是 Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全 套映射机制。程序员往往只需定义好了POJO ...

    ibatis详细解答

    相对Hibernate和Apache OJB 等“一站式”ORM解决方案而言,ibatis 是一种“半 自动化”的ORM实现。 以前ORM的框架(hibernate,ojb)的局限: 1. 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发...

    SSM整合.zip

    mybatis它是轻量级持久层框架,由ibatis演化而来。它完成将数据库的结果集封装到对象中POJO。业务层控制层和使用Hibernate框架一样。Hibernate基于hql是完全...全自动ORM。Mybatis基于sql是半面向对象。半自动的ORM。

    mybatis_day01.docx

    mybatis是一种持久层框架,也属于ORM映射。前身是ibatis。 相比于hibernatehibernate为全自动化,配置文件书写之后不需要书写sql语句,但是欠缺灵活,很多时候需要优化; mybatis为半自动化,需要自己书写sql语句,...

    MyBatis实践之动态SQL及关联查询

    MyBatis,大家都知道,半自动的ORM框架,原来叫ibatis,后来好像是10年apache软件基金组织把它托管给了goole code,就重新命名了MyBatis,功能相对以前更强大了。本文给大家介绍MyBatis实践之动态SQL及关联查询,对...

Global site tag (gtag.js) - Google Analytics