Hibernate与MyBatis的区别
Hibernate:
- Hibernate是一个全表映射的框架。
- 通常开发者只需要定义好持久化对象到数据库表的映射关系,就可以通过Hibernate提供的方法完成持久层操作。
- 开发者并不需要熟练的掌握SQL语句的编写,Hibernate会根据制定的存储逻辑,自动的生成对应的SQL,并调用JDBC接口来执行,所以其开发效率会高于MyBatis。
- Hibernate也存在一些缺点,例如它在多表关联时,对SQL查询语句的支持较差;更新数据时需要发送所有子段;不支持存储过程;不能通过优化SQL来优化性能等。
MyBatis:
- MyBatis是一个半自动映射的框架
- “半自动”是相对于Hibernate全表映射而言的,MyBatis需要手动匹配提供POJO、SQL和映射关系,而Hibernate只需要提供POJO和映射关系即可
- 与Hibernate相比,虽然使用MyBatis手动编写SQL要比Hibernate的工作量大,但MyBatis可以配置动态SQL并优化SQL,可以通过配置决定SQL的映射规则,它还支持存储过程等。对于一些复杂的和需要优化性能的项目来说,显然使用MyBatis更加合适