Hibernate框架的工作原理是,通过XML的映射文件将数据库中的表与简单Java对象对应起来,然后在运行时系统会自动为这些映射关系生成SQL,而程序员只要通过对象之间的操作,就可以完成对数据库表的操作。这样对象和表之间的映射关系就是一个O/R Mapping。
IBatis框架则不同,它也有一个XML的映射文件,可是在这个映射文件中却不是通过简单Java对象与数据库表的字端进行关联,而是通过常见的SQL语句来描述。也就是说,将一个简单Java对象映射成了一句SQL语句。程序员在编码时同样只需对对象进行操作就可以同样完成对数据库表的操作。在表面看来,对象和表之间仍然存在映射关系。
简单的说,就是Hibernate框架通过对象和表字端映射来生成SQL完成持久层的工作,而IBatis框架是通过对象和SQL之间映射来完成持久层的工作。
IBatis的开发者曾经说过“你已经知道SQL,为什么还要学习其他东西”。的确如此,没有了EJB QL和HSQL,只有SQL,这对于从传统DAO转到持久层框架的程序员来说无疑是一个福音。