Hibernate现在是主流框架,谁也不可否认,我也用,同样作为优秀的ORM框架Ibatis虽然不如Hibernate强势但也有着自己的市场竞争力,下面总结下Hibernate与Ibatis之间的区别:
1、封装上的区别
同样作为ORM对象关系映射框架,Hibernate对数据库表与java对象实体之间的映射有着完美的封装。实体类名与数据库表名、实体类成员变量与数据库字段都是一一对应的,还有与其他表之间的映射关系,就连字段的长度也在Hibernate的配置文件中配置了。
而且Hibernate可以自动生成sql语句并调用JDBC执行。
而Ibatis呢,Ibatis封装的是sql语句需要的参数与返回的结果 和 数据库表的字段的对应映射,Ibatis的sql语句需要程序员自己完成。
很显然,使用Hibernate框架开发会在开发效率以及代码简介的程度上压过Ibatis一头。但话说回来,存在就有存在的道理,Ibatis侧重的是sql的灵活掌控。
2、灵活性上
接着上文说,Ibatis对sql的灵活程度是优于Hibernate的,其实Ibatis就是牺牲了开发效率和数据库的可移植性来换取了sql的灵活应用,对于善于数据库编程的程序员,还是比较不错的选择。
还有一方面,有的系统数据量庞大、对性能要求很高,这个时候我们就应该选择Ibatis,因为我们可以对sql进行更加细粒度的优化。
在一方面,有的项目涉及到保密,开发过程中不会让程序员知道数据库的数据结构,这个时候选择Ibatis要比Hibernate方便的多。
3、数据库的可移植性
不用说,我们在Ibatis项目中写的sql语句的语法肯定是针对某一种数据库的,换了数据库指定不好使。对于Hibernate来说就不会出现这个问题了。
4、学习成本上
Hibernate入门门槛高,想要精通更难,Ibatis入门门槛低,容易上手。团队中没有Hibernate高手的话最好还是选择Ibatis,否则没等你体会到Hibernate的方便之处你就被他的复杂的OR映射折磨死了。
5、Hibernate文档方面要比Ibatis健全的多。