版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
引言
MyBatis以及Hibernate都是O/R Mapping解决方案,两者的应用都十分的广泛,那么它们究竟有何相同和区别,在实际应用中应该如何选择呢?我使用过MyBatis以及Hibernate,下面仅从我个人使用上的感觉来总结一下二者的相同点与区别:
一、相同点
- 两者都是一种O/R Mapping解决方案,都是常见的持久化框架
- 两者都可以与spring等常见的框架比较好的集成
- 两者的使用过程大概相似,流程一般都如下:
- 创建MyBatis或者Hibernate配置文件,MyBatis/Hibernate通过该配置文件进行初始化工作。包括数据库的配置以及映射文件的配置
- 创建映射文件,每一个数据表对应一个映射文件,该文件描述了数据库中表的信息,也描述了对应的持久化类的信息;
- 创建持久化类,每一个类对应一个数据库表,通过映射文件进行关联。
- 编写DAO层然后根据业务编写Service层代码
二、区别
- MyBatis与Hibernate相比更加小巧,容易上手,特别是对于那些原来对sql比较熟悉的朋友;
- MyBatis是直接基于SQL的,它要求开发者自己编写具体的SQL语句,它将使用这些SQL语句查询数据库,然后通过映射配置文件,将SQL所需要的参数以及返回的结果字段映射到指定的POJO中。正是由于MyBatis的SQL是由开发者完全编写,所以它的灵活性更高;Hibernate相对是比较重量级的,比较复杂,但是自动化程度比较高,封装性更强,可以说更加地面向对象,不要求开发者自己编写SQL语句,可以使用自动化工具辅助开发。
- 由于MyBatis是直接基于SQL的,中间过程比较少,所以相对hibernate来说,其运行速度 比较快。当然了如果是比较标准的CURD操作,使用hibernate能够显著的减少代码编写的量,而如果希望能够更加灵活的控制查询条件,对SQL进行 优化等操作,那么选择MyBatis会更好一些。