`
echozhjun
  • 浏览: 49809 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

接触Ibatis,另一个ORM框架

阅读更多

最近学习了Ibatis应用,本来想自己写点总结之类的东西,却发现Ibatis真的很简洁,看了夏新的《Ibitis开发指南》讲的异常明白,所以就直接转载过来了:

相对Hibernate和Apache OJB 等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全套映射机制。程序员往往只需定义好了POJO到数据库表的映射关系,即可通过Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储辑,自动生成对应的SQL 并调用JDBC 接口加以执行。
大多数情况下(特别是对新项目,新系统的开发而言),这样的机制无往不利,大有一统天下的势头。但是,在一些特定的环境下,这种一站式的解决方案却未必灵光。在笔者的系统咨询工作过程中,常常遇到以下情况:
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 的出现显得别具意义。

分享到:
评论
1 楼 optimism_best 2010-01-09  
iBATIS比起hibernate,我觉得还是hibernate好用

相关推荐

    iBatis和MyBatis对比

    在Java EE开发领域,iBatis和MyBatis是两个广受欢迎的持久层框架,它们都提供了SQL映射的功能,帮助开发者处理...因此,无论你是刚接触持久层框架的新手,还是从iBatis过渡过来的老手,MyBatis都是一个值得信赖的选择。

    ibatis和hibernate的区别

    **Hibernate** 是一个全面的ORM框架,它提供了从对象到数据库的全自动化映射,包括对象的持久化、查询、事务管理等功能。Hibernate通过XML或注解定义对象与数据库表的映射,可以在运行时自动生成SQL语句。它还支持...

    Manning iBATIS in Action

    iBATIS是Java世界中一个流行的数据访问框架,它将SQL映射与对象模型相结合,简化了数据库操作,提高了开发效率。这本书由经验丰富的开发人员撰写,旨在帮助读者理解和掌握iBATIS的核心概念和实际应用。 在书中,...

    Ibatis.net学习例子以及使用教程书

    Ibatis.net是一个轻量级的持久层框架,它在.NET环境中提供了灵活的数据访问接口,能够有效地将业务逻辑和数据访问层解耦。本教程书旨在帮助开发者深入理解并熟练运用Ibatis.net,通过实例和详细讲解,使得学习过程...

    ibatis例子,很好的

    Ibatis是由MyBatis的前身,由Clinton Begin开发的一个数据库操作库,它提供了SQL映射框架,允许开发者编写更灵活的SQL语句,而不是受限于ORM(对象关系映射)的限制。 描述 "ibatis运用例子,适用于初学者,很好的...

    ibatis开发指南_夏昕.pdf

    通过学习,读者能够理解iBatis是如何作为一个轻量级的ORM(对象关系映射)工具,来解决数据库操作中的各种问题。 iBatis的核心是SQL Map配置文件,这是连接业务逻辑和数据库查询的关键。书中详细讲解了如何编写和...

    ibatis学习时的项目

    【标题】"ibatis学习时的项目"是一个基于Java的Web项目,主要目的是为了学习和实践iBatis这个持久层框架。iBatis是MyBatis的前身,它提供了一个SQL映射框架,使得开发者可以将SQL语句直接写在XML配置文件中,实现了...

    HIbernate,Ibatis等持久层开发文档

    **Hibernate** 是一个对象关系映射(ORM)框架,它允许Java开发者用面向对象的方式处理数据库。在`Hibernate 3.1.2中文文档.pdf`中,你可以找到关于配置、实体类映射、会话管理、查询语言(HQL)和 Criteria API 的...

    mytest-ibatis

    Ibatis,作为一个轻量级的Java ORM(对象关系映射)框架,正是这样的工具。本项目"mytest-ibatis"聚焦于利用Ibatis在XML配置文件中动态地编写SQL语句,以提升代码的可维护性和灵活性。 Ibatis的核心思想是将SQL语句...

    通向架构师的道路第十八到第二十三天的例子

    最后,iBatis是一个轻量级的持久层框架,它是Hibernate的一个替代品,提供了SQL语句与Java代码的分离,让开发者能更灵活地控制SQL执行。在“myssh2”和“beta”文件中,你可能需要学习如何配置iBatis的SqlMapConfig....

    java软件开发——顶岗实习周记25篇.pdf

    Java软件开发是一个涵盖广泛的技术领域,特别是在实习过程中,学习者会接触到多个关键技术和实践环节。在顶岗实习的25篇文章中,我们可以看到实习生逐步深入理解并应用Java开发的历程。 首先,实习生接触到了一系列...

    spring2.5.6中文文档

    Spring 2.5.6是该框架的一个稳定版本,发布于2008年,为开发者提供了许多关键特性和改进。本文档详细介绍了Spring 2.5.6的主要功能和用法,特别是与2.0版本相比的差异,对于理解该版本的特性非常有帮助。 1. **依赖...

    [详细完整版]软件实习报告.doc

    Hibernate是一个对象关系映射(ORM)框架,简化了数据库操作;Spring框架则是一个全面的企业级应用开发框架,包含了依赖注入、AOP(面向切面编程)等功能。熟练掌握这三个框架,有助于构建复杂、高效的企业级应用。 ...

    Struts应用开发完全手册源代码

    Struts 是一个开源的Java框架,专为构建企业级Web应用程序而设计。它基于Model-View-Controller(MVC)架构模式,可以帮助开发者组织和管理应用程序的各个部分,使其更易于维护和扩展。《Struts应用开发完全手册》是...

    刘树全的J2EE培训教程

    包括了容器(如PicoContainer和xWork)、轻量级框架(Spring)、面向切面编程(AspectJ)、EJB(Enterprise JavaBeans,2.1和3.0版本)、数据库相关技术(JDBC、DAO模式、Spring JDBC、ORM框架如Hibernate、iBatis和...

    JAVA学习步骤DOC

    1. **流行Web框架**:介绍Struts、WebWork、Tapestry、JSF、Velocity和Freemarker,以及ORM框架如Hibernate和iBatis。 2. **Struts and JSTL**:学习Struts框架和JSTL标签库,实现MVC模式。 3. **Hibernate**:...

    JAVAEE学习计划.doc

    还将学习Struts、WebWork、Tapestry、JSF、Velocity、Freemarker等框架,以及Hibernate和iBatis等ORM工具。重点将放在Struts1&2的应用开发上,包括MVC理论、国际化支持、异常处理和测试。对于Hibernate,学员将学习...

Global site tag (gtag.js) - Google Analytics