暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

什么是IBatis,MyBatis又是啥,两只老虎?

每天学点CRUD 2021-07-05
2021

如果你在使用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的灵活性更符合国内的业务特点,业务改动也能迅速的实现更改,而不影响业务。另外就是数据量处理上的区别。











  平凡打工人




  点赞 在看 走一波



文章转载自每天学点CRUD,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论