zoukankan      html  css  js  c++  java
  • hibernate和ibatis的区别

    通过别人的资料,进行自己关注的一些扼要点的整理

    共同点:

    1.

    不同点:
    1. 自动化程度上,hibernate是全自动化的orm框架,提供了对象到数据库的完全映射和sql的内部自动生成,其对象映射是指pojo到整张数据表的映射。而ibatis则是半自动化的,其对象映射是指ibatis提供了sql语句的参数到pojo的映射,sql语句的返回到pojo的映射,而且sql语句并不自动生成,由开发者手动编写和维护。

    2. 框架灵活性。自动化程度上的区别,直接影响了框架灵活性的区别。比如,在场景A中,要查询表的部分字段,
    在场景B中,要查询表的所有字段,hibernate由于只有一个配置文件,要么就部分字段lazy load,要么就全部
    查询出来,而且默认是(全部查询的),就无法适用2个场景,灵活性差。但要是ibatis,则可以通过不同场景使用
    不同sql语句来满足,并且不同的场景下,也可以有自己的sql语句的参数pojo映射和返回结果pojo映射,互不影响,
    这就灵活的适应了不同场景的要求。

    3. 性能上的区别。在海量数据和数据库性能要求苛刻的场合,往往是通过高度优化的sql语句来实现的,而这种情况下,
    hibernate则无法实现,但ibatis则可能通过sql的优化,来进一步提升数据库代码的性能。

    4. 学习门槛和成本。ibatis比hibernate更容易上手,而且hibernate也更复杂一些。

    5. 框架的成熟度。


    注意,实际开发中,要根据实际场景和需求来选择框架,举个例子

    系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开

    开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现(就笔者工作所面向的金融行业而言,工商银行、中国银行、交通银行,都在开发规范中严格指定

    最关键的一句话是ibatis的作者说的:
    if you are starting a new project and you're in full control of your object model and database design, hibernate is a good choice of o/r tool.
    if you are accessing any 3rd party databases (e.g. vendor supplied), or you're working with a legacy database, or even just a really poorly designed database, then an
    o/r mapper might not be capable of handling the situation. that's were an sql mapper comes in handy

  • 相关阅读:
    python学习之模块(pip),列表生成式,模块操作mysql,excel
    python学习之非空即为真,函数,集合,解包与打包
    配置虚拟机和网络配置
    python学习之文件读写,序列化(json,pickle,shelve)
    python学习之列表,元祖,字典
    盒子内部文字超出不换行
    织梦dedecms文章发布日期时间调用标签大全
    贝塞尔曲线值
    CSS解决border影响元素宽高的问题(box-sizing属性)
    pc建站自适应
  • 原文地址:https://www.cnblogs.com/jianglong-liang/p/3816677.html
Copyright © 2011-2022 走看看