首页 > 其他分享 >iBATIS之父:iBATIS框架的成功蜕变

iBATIS之父:iBATIS框架的成功蜕变

时间:2023-06-26 17:33:26浏览次数:40  
标签:蜕变 框架 开发人员 iBATIS 之父 RM 工具 JPetStore


作为软件开发人员,我已经在许多不同的环境中工作过。即使是在同一家公司中,软件开发的方式也往往是迥然不同的。开发人员每天都要面对各种各样的挑战、面对不同的人和工具,考虑到这一点,你就会迅速了解他们的世界是多么的变化多端。我永远也不知道下一个项目又会有怎样惊人的挑战,因此我总是在工具箱中保留着各种各样的工具。在很长一段时间内,iBATIS只不过是这个工具箱中的一种普通工具。当我不得不手写JDBC代码时,它可以帮我节省很多时间。

那么,iBATIS是如何从我的工具箱中的普通工具转变为一个为成千上万的人使用的Apache项目的呢?其实原本我从没打算过使iBATIS成为一个完全成熟的开源项目。所以尽管它的源代码就在那儿,但我从没想过把它推向市场,也从没主动地和任何人分享过它,直到JPetStore。

故事发生在2002年7月1日,我针对网上流传的关于Pet Store的讨论发了一个帖子。当时位于Redmond的一家大型软件公司宣称其C#语言和.NET平台的生产率要比Java高出好几个数量级。我在技术上持中立态度,虽然我承认C#和.NET的确相当之好,但是我仍然不能接受上述这种论断。因此连续几个星期,我用晚上的时间编写了JPetStore,以之反驳他们的论断。JPetStore发布后,在Java社区引起了广泛的讨论。其中讨论得最为热烈的话题就是JPetStore没有使用Enterprise JavaBeans(EJB)的持久化层,而是用了一个称为iBATIS的小型框架。

经常有人问我:“为什么不用其他开源工具?”实际上,当时根本没有像iBATIS那样的工具。代码生成器倒是有很多,有开发时(development-time)代码生成工具,有构建时(build-time)代码生成工具,在此我就不对它们过多赘述了。我只强调一点:任何能够被生成的代码在经过适当的泛化(generalized)后都应该可以被抽取出来,成为一个框架或者某个框架的一部分。而这正是iBATIS的本质:一个用于加快JDBC编程的经过泛化的框架。

另一个被经常问到的问题就是,“为什么不用对象/关系映射(O/RM)工具?”只要环境合适,你当然可以使用O/RM工具。例如,当你可以完全控制数据库和对象模型时,O/RM工具就非常有效:你可以毫不费力地得到理想的对象关系映射;反之,如果你无法同时控制它们,那么当两者之间存在不匹配时(这几乎是肯定的),使用O/RM就会成为一场噩梦,因为它们必须匹配。但是,要为我经常处理的数据库类型建立与对象模型之间的映射几乎是不可想象的。当然,使用一个好的O/RM工具,如Hibernate或者TopLink,也许可以做到。但问题是:真的应该去建立这种映射吗?

曾经有人给我讲过一个故事,故事中那个拿着锤子的人总是把所有东西都看作是钉子——哈哈,是否觉得似曾相识!回到我们的话题,O/RM工具实际上是一种框架。而框架总是构建于约束和假设之上。这些约束和假设在某些环境中是理想的,但并不适用于所有的环境——不要因为拿着锤子就把所有的东西都看作钉子J。作为软件开发人员,我们的工作就是用那些理想的解决方案去匹配我们遇到的实际问题,并非只能使用那些我们知道的方案或者最流行的方案,或者网上最热门的方案,而应该使用那些能够最好地解决我们所面对的问题的方案。总之,不同的环境需要不同的工具——iBATIS就是这众多不同工具中的一种。

到目前为止,iBATIS已经在3种语言中得到了实现:Java、C#和Ruby。并且有一个由十几个开发人员组成的小组在专门维护它,同时它还拥有一个由成千上万的开发人员组成的社区。你可以在图书和文章中,甚至在Web上的博客中学习它。虽然iBATIS算不上(也似乎根本不可能成为)持久化框架的翘楚,但它仍然是一个巨大的成功。另外,回答关于iBATIS的各种问题这个任务现在已经由社区全面接管了,如果你们不满意以上问题的答案或者仍然有什么其他问题,欢迎到社区提问。

有一个能够完全“独立自主、自力更生”的社区是一个开源项目取得成功的真正标志。如果你早就读到过这句话,我猜你一定是该社区的一份子。因此让我们一同庆祝iBATIS这个小小框架的巨大成功吧。


Clinton Begin

iBATIS持久化框架的创始人

JPetStore应用程序的缔造者



著:Clinton Begin;Brandon Goodin;Larry Meadors

译:叶俊

本书评价:

1.       iBATIS之父权威著作

2.       深入探讨比Hibernate更简单高效的数据库访问框架

3.       同时支持Java和.NET平台

4.       “本书是独特并且无价的,它将成为我以后多年的案头必备参考。”

——Nathan Maves,Sun公司资深Java架构师

5.       “真是一本绝妙好书!清晰、易读、深入,为整个实战系列增彩不少。”

——JavaLobby.com网站

内容简介:

本书是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的大部分知识点,可以作为iBATIS学习和Web开发的经典案例,非常值得深入研究。

本书既可为广大的开发人员(不仅仅是Web应用程序开发人员)提供指导,也可为架构师的项目决策提供参考。项目经理、数据库管理员、质量保证员与测试员以及系统分析师也能从本书中受益。

作者介绍:

Clinton Begin iBATIS的创造者,资深企业应用开发人员和敏捷开发导师。他曾经担任ThoughtWorks、微软和斯坦福大学等业界知名机构的顾问。

Brandon Goodin iBATIS核心开发人员,资深企业应用开发顾问。

Larry Meadors iBATIS核心开发人员,资深企业应用开发顾问。



 

标签:蜕变,框架,开发人员,iBATIS,之父,RM,工具,JPetStore
From: https://blog.51cto.com/u_15767091/6556208

相关文章

  • DWR之父作序推荐,国内第一部DWR著作
    DWR之父作序推荐国内第一部DWR著作轻松实现Wiki程序、游戏和时间跟踪系统等看高手如何灵活运用ExtJS、Comet、Struts2、Hibernate、Spring等新技术报名啦,赶紧报名参赛吧……媒体评论“真正的开发者往往不擅长写书,但Frank是个例外。他能为DWR写书我深感荣幸。感谢他为DWR所做......
  • 随笔(十九)『org.apache.ibatis.binding.BindingException: Invalid bound statement (n
    1、错误信息:org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound)出现此错误时: 1、除了查看代码上的各种名称,映射之类能否找到外。 2、查看下target中是否有对应的xml文件,因为maven默认是不会把非resource中的xml打包进target的 解决方案:pom.xm......
  • 开源协议专题(二):开源之父和 GUN 计划
    在计算机这个人类智慧结晶的创世纪过程中,随着操作系统从无到有、随着层出不穷的软件被创造出来,版权、相关领域的垄断及法律也随之出现,开源软件运动和开源许可协议也随之出现。在软件开源的运动发展过程中,涌现出了很多动人的故事,新的概念如开源软件、开源许可协议、开源系统等,如同......
  • Hibernate_根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
     1.功能需求背景 项目中使用hibernate作为数据持久层框架,主要考虑hibernate在进行一些简单的crud操作时非常便利,不需要和ibatis似的为每个sql操作都写一堆文件,但是同时也带来了一些局限性,如类似ibatis强大的动态查询功能用不了了,但是这个功能在项目中的应用场景又很大,hibernate......
  • ibatis 批处理
    Ibatis中进行批量操作 iBatis整理——iBatis批处理实现(Spring环境)最近做一个小项目,用到Spring+iBatis。突然遇到一个很久远,却很实在的问题:在Spring下怎么使用iBatis的批处理实现? 大概是太久没有写Dao了,这部分真的忘得太干净了。 从4个层面分析这部分实现: iBatis的基本实现......
  • Eclipse的iBatis插件
    mybatiseditor[[color=red]EditorsupportforMyBatisandiBatisinEclipse[/color]][url]https://code.google.com/a/eclipselabs.org/p/mybatiseditor/[/url]InstallationYouuseoneofthefollowingmethodstoinstallMyBatisEditor:Ecl......
  • 测试最终版ibatis
    1. 代码  51com.powernode.godbatis.pojoUserpackagecom.powernode.godbatis.pojo;//这是一个pojo用来测试我们的最终版godbatis的51publicclassUser{privateStringid;privateStringname;privateStringage;publicUser(Stringid,String......
  • com.gitHub.pageHelper.PageHelper cannot be cast to org.apache.ibatis.pluin.Inter
    可能是因为版本冲突问题PageHelper5之前与之后是配置文件有发生变化,下面这个是使用pageHelper5.1.18jar包导入。使用PageHelper分页插件(使用spring+分页插件的方式)结果忘记把mybatis的分页插件和依赖去除,结果导致排错很久(怀疑是版本冲突的问题)附上正确用法:pom文件:<dependency......
  • org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps
    org.apache.ibatis.executor.ExecutorException:AquerywasrunandnoResultMapswerefoundfortheMappedStatement'com.xxxx.mapper.EmployeeMapper.selectBybelongweeknull'. It'slikelythatneitheraResultTypenoraResultMapwasspeci......
  • 数字蜕变,传统制造业的转折之“机”| 触想智能推出全新C系列扫码款安卓工位机
    信息技术时代,传统制造业的未来在于数字工厂。数字工厂的核心是数据采集与动态监管,抛开大数据、云计算、物联网这些庞大后台概念不谈,承载这一核心要务的现场工具就是产线工位机设备。基于以上关键需求,触想智能早在2019年就已上市适用于制造业数字化转型的生产力工具......