学过JAVA的程序员一定都使用过Hibernate和MyBatis,或者至少听过他们的大名。那么到底Hibernate好还是MyBatis更好呢。事实是没有万能的钥匙。他们两个各有利弊,你只有发挥他们的优势,摒弃他们的缺点,才能游刃有余地使用他们。下面,我们就来看看他们有什么相同和区别。
MyBatis
它主要是以数据库为中心的数据映射器。它可以将结果集映射到对象,可以使用简单的 XML 或注解来配置和映射原生信息。
优点:
简单和更快的开发
适合编写纯sql(存储的proc,包括的函数,复杂的查询)
缺点:
SQL可能需要绑定到指定的数据库
没有内置的缓存,分页机制(使用最大记录进行查询实际上会进行全表扫描)
使用场景:
需要完全控制SQL时使用,特别是当您对SQL有充分的了解时。
数据模型与对象模型不完全匹配,或者会随着时间的变化而变得复杂。
Hibernate
它主要是一个以对象为中心的对象关系映射器。换句话说,它只需花费很少的精力就可以将您的对象模型映射到数据库表(对象模型与数据模型同步)。
优点:
它没有侵入性,即所谓的轻量级框架。
移植性会很好。
缓存机制。提供一级缓存和二级缓存。
简洁的HQL编程。
缺点:
通常需要进行微调,会话很难正确完成
Hibernate在批量数据处理的时候是有弱势
学习成本高,很复杂
使用场景:
当数据对象映射同步并且您完全控制db时使用。
不想编写SQL,或者讨厌重复的SQL语句时。