`
y806839048
  • 浏览: 1126617 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

jdbc,mybatis,hibernate各自优缺点及区别

阅读更多
先比较下jdbc编程和hibernate编程各自的优缺点。
   JDBC:
   我们平时使用jdbc进行编程,大致需要下面几个步骤:
   1,使用jdbc编程需要连接数据库,注册驱动和数据库信息
   2,操作Connection,打开Statement对象
   3,通过Statement对象执行SQL,返回结果到ResultSet对象
   4,使用ResultSet读取数据,然后通过代码转化为具体的POJO对象
   5,关闭数据库相关的资源
  jdbc的缺点:
  一:工作量比较大,需要连接,然后处理jdbc底层事务,处理数据类型,还需要操作Connection,Statement对象和ResultSet对象去拿数据并关闭他们。
   二:我们对jdbc编程可能产生的异常进行捕捉处理并正确关闭资源
 
   由于JDBC存在的缺陷,在实际工作中我们很少直接使用jdbc进行编程,用的更多的是ORM对象关系模型来操作数据库,Hibernate就是一个ORM模型
     Hibernate:
    Hibernate是建立在若干POJO通过xml映射文件(或注解)提供的规则映射到数据库表上的。我们可以通过POJO直接操作数据库的数据,他提供的是一种全表映射的模型。相对而言,Hibernate对JDBC的封装程度还是比较高的,我们已经不需要写SQL,只要使用HQL语言就可以了。
    使用Hibernate进行编程有以下好处:
    1,消除了代码的映射规则,它全部分离到了xml或者注解里面去配置。
    2,无需在管理数据库连接,它也配置到xml里面了。
    3,一个会话中不需要操作多个对象,只需要操作Session对象。
    4,关闭资源只需要关闭一个Session便可。
    这就是Hibernate的优势,在配置了映射文件和数据库连接文件后,Hibernate就可以通过Session操作,非常容易,消除了jdbc带来的大量代码,大大提高了编程的简易性和可读性。Hibernate还提供了级联,缓存,映射,一对多等功能。Hibernate是全表映射,通过HQL去操作pojo进而操作数据库的数据。
 
    Hibernate的缺点:
    1,全表映射带来的不便,比如更新时需要发送所有的字段。
    2,无法根据不同的条件组装不同的SQL。
    3,对多表关联和复杂的sql查询支持较差,需要自己写sql,返回后,需要自己将数据封装为pojo。
    4,不能有效的支持存储过程。
    5,虽然有HQL,但是性能较差,大型互联网系统往往需要优化sql,而hibernate做不到。
   
 
Mybatis:
    为了解决Hibernate的不足,Mybatis出现了,Mybatis是半自动的框架。之所以称它为半自动,是因为它需要手工匹配提供POJO,sql和映射关系,而全表映射的Hibernate只需要提供pojo和映射关系即可。
   Mybatis需要提供的映射文件包含了一下三个部分:sql,映射规则,pojo。在Mybatis里面你需要自己编写sql,虽然比Hibernate配置多,但是Mybatis可以配置动态sql,解决了hibernate表名根据时间变化,不同条件下列不一样的问题,同时你也可以对sql进行优化,通过配置决定你的sql映射规则,也能支持存储过程,所以对于一些复杂和需要优化性能的sql查询它就更加方便。Mybatis几乎可以做到jdbc所有能做到的事情。
 
什么时候使用Hibernate,Mybatis
    Hibernate作为留下的Java orm框架,它确实编程简易,需要我们提供映射的规则,完全可以通过IDE生成,同时无需编写sql确实开发效率优于Mybatis。此外Hibernate还提供了缓存,日志,级联等强大的功能,但是Hibernate的缺陷也是十分明显,多表关联复杂sql,数据系统权限限制,根据条件变化的sql,存储过程等场景使用Hibernate十分不方便,而性能又难以通过sql优化,所以注定了Hibernate只适用于在场景不太复杂,要求性能不太苛刻的时候使用。
    如果你需要一个灵活的,可以动态生成映射关系的框架,那么Mybatis确实是一个最好的选择。它几乎可以替代jdbc,拥有动态列,动态表名,存储过程支持,同时提供了简易的缓存,日志,级联。但是它的缺陷是需要你提供映射规则和sql,所以开发工作量比hibernate要大些。
 
 
1)从层次上看,JDBC是较底层的持久层操作方式,而Hibernate和MyBatis都是在JDBC的基础上进行了封装使其更加方便程序员对持久层的操作。
2)从功能上看,JDBC就是简单的建立数据库连接,然后创建statement,将sql语句传给statement去执行,如果是有返回结果的查询语句,会将查询结果放到ResultSet对象中,通过对ResultSet对象的遍历操作来获取数据;Hibernate是将数据库中的数据表映射为持久层的Java对象,对sql语句进行修改和优化比较困难;MyBatis是将sql语句中的输入参数和输出参数映射为java对象,sql修改和优化比较方便.
3)从使用上看,如果进行底层编程,而且对性能要求极高的话,应该采用JDBC的方式;如果要对数据库进行完整性控制的话建议使用Hibernate;如果要灵活使用sql语句的话建议采用MyBatis框架。
分享到:
评论

相关推荐

    JDBC-Mybatis-Hibernate实例.7z

    在本实例中,我们看到一个涵盖了JDBC、MyBatis和Hibernate三种不同方式来实现这一任务的项目。这三种技术各有优势,适应不同的应用场景。 首先,JDBC是Java标准API,用于连接和操作数据库。它提供了低级别的数据库...

    基于Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate.zip

    本压缩包文件"基于Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate.zip"包含了一些关于如何使用Java中的三种主流数据访问技术——MyBatis、Spring JDBC和Hibernate的资源,这些技术都是Java开发者必备...

    my-jdbc.rar_jdbc_jdbc Java_mybatis

    **JDBC的优缺点** 优点:JDBC提供了标准化的API,使得开发人员可以轻松地在不同的数据库之间迁移;它支持多种数据库,具有广泛的兼容性。 缺点:使用原生的JDBC编写数据库操作代码较为繁琐,需要手动管理连接和事务...

    删掉,复制别人东西,怕侵权,原本只想收藏的

    jdbc,mybatis,hibernate各自优缺点及区别 先比较下jdbc编程和hibernate编程各自的优缺点。 JDBC: 我们平时使用jdbc进行编程,大致需要下面几个步骤: 1,使用jdbc编程需要连接数据库,注册驱动和数据库信息 2,...

    Mybatis 28道面试题及答案.docx

    Mybatis与Hibernate的主要区别在于: 1. Mybatis不是完全的ORM框架,需要程序员自行编写SQL。 2. Mybatis的灵活性较高,适合SQL性能优化,而Hibernate的ORM能力更强,数据库无关性好。 在Mybatis中,`#{}`和`${}`的...

    Mybatis讲义

    #### 一、MyBatis背景及定义 - **起源**: MyBatis 最初源自 Apache 的一个开源项目 iBatis,后来该项目迁移至 Google Code 并更名为 MyBatis,最终在 2013 年 11 月迁移到 GitHub 上继续开发维护。 - **定义**: ...

    day66-mybatis面试题

    MyBatis面试题往往会围绕其核心特性、应用场景、优缺点以及与其他框架如Hibernate的对比进行展开。下面我们详细解释给出的一些面试知识点: 1. MyBatis的特性:MyBatis是一个半ORM(对象关系映射)框架,提供了对象...

    MyBatis面试题 37道1

    MyBatis的优缺点** 优点: - 减少了JDBC代码量,简化了数据库操作,降低了系统的维护难度。 - SQL语句可以在XML中独立编写,便于管理和优化,支持动态SQL,增强了查询的灵活性。 - 提供对象关系映射标签,简化了...

    mybatis学习资料

    总结起来,MyBatis通过提供灵活的SQL定义和强大的动态SQL功能,解决了JDBC的重复代码问题,同时避免了Hibernate的某些缺点。它为开发者提供了更好的控制权,使得数据库操作既能保持高效,又能保证代码的可读性和可...

    MyBatis的27道面试题

    本篇文章对MyBatis进行了27个问题的梳理,深入探讨了该框架的应用场景、优缺点、与Hibernate的区别、动态SQL的用法、缓存机制等多方面内容。 首先,MyBatis是一个半自动化的ORM框架,它内部封装了JDBC操作,开发者...

    springmvc_mybatis查询示例

    虽然主要使用了SpringMVC和MyBatis,但理解Hibernate可以帮助开发者对比不同ORM框架的优缺点。Hibernate是一个完整的对象关系映射(ORM)解决方案,提供了对JDBC的封装,使得Java对象可以直接操作数据库。 总的来说...

    《Mybatis应用技术》复习资料.doc

    - **定义**: MyBatis 是一个优秀的持久层框架,它简化了 JDBC 的操作流程,使开发者能够更专注于 SQL 语句的编写,而无需关注底层的数据库连接、预处理及结果集的处理等细节。 #### 二、MyBatis架构分层 MyBatis ...

    mybatis.docx

    - JDBC的缺点:代码繁琐,易出错,不易维护,这是MyBatis出现的主要原因。 3. MyBatis 概述 - MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,解决了JDBC的繁琐操作问题。 - MyBatis...

    mybatis面试题整理详细版

    MyBatis 和 Hibernate 的区别包括: * Mybatis 和 Hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句。 * Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,...

    SSH框架的优缺点

    下面我们将深入探讨SSH框架的优缺点。 **一、Struts2** Struts2是基于MVC设计模式的Web应用框架,它继承了Struts1的优点并解决了其不足。其主要优点包括: 1. **灵活的拦截器机制**:Struts2使用拦截器来处理请求,...

    MyBatis 10道面试题和答案.docx

    JDBC编程的不足及MyBatis的解决方案: 1. 连接管理:JDBC创建和释放连接频繁,MyBatis通过配置数据链接池(如Druid、C3P0等)来管理连接,提高了性能。 2. SQL嵌入代码:MyBatis将SQL语句从代码中分离,存储在XML...

    Spring事务优缺点及使用详解.docx

    3. Hibernate:Hibernate使用Session对象进行事务处理,通过调用Session的commit()和rollback()方法来控制事务的提交和回滚。 然而,这些方式存在一些不足,如不同数据库访问技术处理事务的方式不同,需要对各种...

    MyBatis面试题(2020最新版)陆小马功钟浩.pdf

    Hibernate和MyBatis都是对JDBC的封装,并且都是持久层框架,它们都用于DAO层的开发。它们之间的主要区别在于映射关系和关联关系的配置复杂度、SQL优化和移植性方面。Hibernate提供全表映射,配置简单,并且支持HQL...

    mybatis-day01培训内容1

    MyBatis旨在填补JDBC和Hibernate之间的空白,结合两者的优点。它提供了一种介于完全的手动SQL操作和全自动化ORM之间的解决方案。MyBatis允许开发者自由地编写SQL,同时通过配置文件或注解将SQL语句与Java对象映射...

Global site tag (gtag.js) - Google Analytics