Hibernate
2001年,由Gavin King开发. Hibernate(过冬),比如数据冬存春取.
可以把Java的属性用声明的方式映射到数据库表,完全不用你操心connection,sql这些细节.
Hibernate使用,简单,灵活,脱离庞杂昂贵的Websphere,weblogic容器也能使用.
MyBatis(前身iBatis)
2001年,由Clinton Begin发起的开放源代码项目.于2010年6月16日被谷歌托管,改名为MyBatis.
是一个基于SQL映射支持Java和·NET的持久层框架,
iBatis最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,iBatis是能够满足你的要求又足够灵活的最简单的解决方案.
Hibernate vs MyBatis
目前主流的 ORM(对象关系映射),无论Hibernate还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO(Plain Ordinary Java Object 简单的Java对象)到数据库表的全套映射机制.程序员往往只需定义好了 POJO 到数据库表的映射关系,即可通过 Hibernate或者OJB 提供的方法完成持久层操作.程序员甚至不需要对 SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执行.
当系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标.此时Hibernate不能解决优化的问题,只能直接使用JDBC去解决.
“半自动化”的ibatis,却刚好解决了这个问题.这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM 实现而言,“全自动”ORM 实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行.而ibatis 的着力点,则在于POJO 与 SQL之间的映射关系.也就是说,ibatis并不会为程序员在运行期自动生成 SQL 执行.具体的 SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO.