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

  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/jianglong-liang/p/3816677.html
Copyright © 2011-2022 走看看