Java典型的ORM框架有:
hibernate
:全表映射框架,强大、复杂、笨重、学习成本较高
Mybatis
:半自动映射框架,必须要自己写sql
hibernate和Mybatis的区别
1)Hibernate基本不需要编写SQL就可以通过映射关系来操作数据库,是一种全表映射的体现,而MyBatis需要手动匹配 POJO
、SQL
和映射关系
,相对于Hibernate来说比较繁琐一些。
2)Hibernate 不需要编写大量的 SQL,就可以完全映射,提供了日志、缓存、级联(级联比 MyBatis 强大)等特性,此外还提供 HQL(Hibernate Query Language)对 POJO 进行操作,操作比较方便,但会性能消耗较大。MyBatis 手动编写 SQL,支持动态 SQL、处理列表、动态生成表名、支持存储过程,可以灵活地定义查询语句,所以在性能方面要优于Hibernate,但是操作较为繁琐。
3)在管理系统时代,首先是实现业务逻辑,然后才是性能,所以Hibernate在是主流。 在移动互联网时代,MyBatis是首选,程序员可以自己制定SQL规则,能更加精确定义SQL,从而优化性能,更符合移动互联网高并发,大数据,高性能,高响应的要求。 所以对于性能要求不太苛刻的系统,比如管理系统、ERP 等推荐使用Hibernate;而对于性能要求高、响应快、灵活的系统则推荐使用MyBatis.
整体优势对比:
1)Hibernate 优势
- Hibernate 的 持久层(DAO 层)开发比 MyBatis 简单,Mybatis 需要维护 SQL 和结果映射。
- Hibernate 对对象的维护和缓存要比 MyBatis 好,对增删改查的对象的维护要方便。
- Hibernate 数据库移植性很好,MyBatis 的数据库移植性不好,不同的数据库需要写不同 SQL。
- Hibernate 有更好的二级缓存机制,可以使用第三方缓存。MyBatis 本身提供的缓存机制不佳。
2)Mybatis优势
- MyBatis 可以进行更为细致的 SQL 优化,可以减少查询字段。
- MyBatis 容易掌握,而 Hibernate 门槛较高。
注意:
POJO(Plain Ordinary Java Object)
普通Java类,具有一部分getter/setter方法的类就可以称作POJO。实际意义就是普通的JavaBeans(简单的实体类),主要作为支持业务逻辑的协助类,方便程序员使用数据库中的数据表。