当前位置:   article > 正文

MyBatis与Hibernate的优缺点和适用场景_hibernate框架的应用场景

hibernate框架的应用场景

结合两个ORM框架MyBatis和Hibernate的优缺点,论述二者的适用场景

MyBatis:

优点:

1. 易于上手和掌握。

2. sql写在xml里,便于统一管理和优化。

3. 解除sql与程序代码的耦合。

4. 提供映射标签,支持对象与数据库的orm字段关系映射

5. 提供对象关系映射标签,支持对象关系组建维护

6. 提供xml标签,支持编写动态sql。

缺点:

1. sql工作量很大,尤其是字段多、关联表多时,更是如此。

2. sql依赖于数据库,导致数据库移植性差。

3. 由于xml里标签id必须唯一,导致DAO中的方法不支持方法重载。

4. 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)

5. DAO层过于简单,对象组装的工作量较大。

6.  不支持级联更新、级联删除。

7. 编写动态sql时,不方便调试,尤其逻辑复杂时。

8 提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。

9. 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。

10. 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)

11. 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)

12. 缓存使用不当,容易产生脏数据。

Hibernate

优点:

  1. Hiberante较深度的封装了jdbc,对开发者写sql语句的能力要求的不高,我们只要通过hql语句操作对象即可完成对数据持久化的操作了。
  2. hibernate可移植性好(如一个项目开始使用的是mysql数据库,但是随着业务的发展,现mysql数据库已经无法满足当前的需求了,现在决定使用Oracle数据库,虽然sql标准定义的数据库间的sql语句差距不大,但是不同的数据库sql标准还是有差距的,那么我们手动修改起来会存在很大的困难,使用hibernate只需改变一下数据库方言即可搞定。)

缺点:

1、在实际开发过程中会生成很多不必要的sql语句耗费程序资源,

2、优化起来不是很方便,且对存储过程支持的也不够强大。(但是针对于hibernate它也提供了一些优化策略,比如说懒加载、缓存、策略模式等都是针对于它的优化方案。)

 

应用场景:

hibernate:是一个标准化的ORM框架。入门的门槛较高,不需要程序写sql,语句就自动生成了。对sql进行优化、修改比较困难。

应用场景:适用于中小企业需求变化不多的项目,比如后台管理系统,涉及的数据量不是很大且对优化没有那么高。

mybatis:专注sql本身,程序员需要自己写sql语句,sql的修改与优化比较方便。它是一个不完全的ORM框架,虽然程序员自己写sql,但它自身也可以实现映射。

应用场景:适用于需求变化较多的项目,比如互联网应用,涉及到大数据的系统。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/179703?site
推荐阅读
相关标签
  

闽ICP备14008679号