

如果你在使用MyBatis,那你是否听过Ibatis呢,或者是否在Mybatis源码中看到过IBatis的包名?平时我们造轮子很喜欢用MyXXX来命名,难道MyBatis也是个山寨货?
IBatis的历史wiki百科查询资料
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语句。
所以在实际应用中,应该根据不同的应用场景,来选择合适自己的框架。
2010年6月16日,IBatis从Apache软件基金会退役(retired),项目的初创团队已经转移到MyBatis项目。
2010年代码迁移到Google Code,2013年迁移到GitHub。
所以其实MyBatis就是IBatis,只是换了个名字继续服务开发者。
具体什么原因要换个名字,又退出Apache基金会,这就不得而知了。
ONE MORE THING据Google搜索词统计,Hibernate与MyBatis使用地区分布显示,国外绝大部分开发都是在使用Hibernate,而国内大都是使用Mybatis,为什么会出现这么明显的对比呢?
网络上对此的讨论也不少,个人认为hibernate以对象设计表结构,需要对应表的总设计,稍一改动可能会需要牵扯关联的对象较多,不能做到快速灵活的变动。
而MyBatis的灵活性更符合国内的业务特点,业务改动也能迅速的实现更改,而不影响业务。另外就是数据量处理上的区别。


平凡打工人




