1、hibernate是一个开源的、采用面向对象的思想实现ORM映射框架,它对jdbc进行了一层封装,对于数据库的连接、关闭、数据的持久化(增删改查)、事务的管理都进行了封装,使得程序开发的时候可以用面向对象的思想来操作数据库。

2、hibernate可以用于jdbc应用的任何场合。优点是,使用面向对象的思想操作数据库;对jdbc的封装,使得开发中不需要写大量的sql语句,大大提高了开发效率;采用数据库方言等方式使得数据库移植十分方便,也使得在开发中不需要考虑数据之间的差异;提供缓存机制,提高查询效率等。

3、缺点是,hibernate并不支持批量操作。对jdbc的封装失去了对sql的控制,而如果执行本地sql则失去了hibernate的可移植性的优势。消耗内存较大。

简述 Hibernate 和 JDBC 的区别、优缺点

JDBC与Hibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势。
相同点:

◆两者都是JAVA的数据库操作中间件。

◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。

◆两者都可以对数据库的更新操作进行显式的事务处理。

不同点:

◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言

◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。

◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。

JDBC与Hibernate读取性能

1、JDBC仍然是最快的访问方式,不论是Create还是Read操作,都是JDBC快。
2、Hibernate使用uuid.hex构造主键,性能稍微有点损失,但是不大。
3、Create操作,JDBC在使用批处理的方式下速度比Hibernate快,使用批处理方式耗用JVM内存比不使用批处理方式要多得多。
4、读取数据,Hibernate的Iterator速度非常缓慢,因为他是每次next的时候才去数据库取数据,这一点从观察任务管理器的java进程占用内存的变化也可以看得很清楚,内存是几十K几十K的增加。
5、读取数据,Hibernate的List速度很快,因为他是一次性把数据取完,这一点从观察任务管理器的java进程占用内存的变化也可以看得很清楚,内存几乎是10M的10M的增加。
6、JDBC读取数据的方式和Hibernate的List方式是一样的(这跟JDBC驱动有很大关系,不同的JDBC驱动,结果会很不一样),这 从观察java进程内存变化可以判断出来,由于JDBC不需要像Hibernate那样构造一堆Cat对象实例,所以占用JVM内存要比 Hibernate的List方式大概少一半左右。
7、Hibernate的Iterator方式并非一无是处,它适合于从大的结果集中选取少量的数据,即不需要占用很多内存,又可以迅速得到结果。另外Iterator适合于使用JCS缓冲。

附加说明:

实际上,不管CMP,Hibernate,JDO等等,所有的ORM都是对JDBC的封装,CMP则是一个重量级封装,JDO中度封 装,Hibernate是轻量级的封装。从理论上来说,ORM永远也不可能比JDBC性能好。就像任何高级语言的运行性能永远也不会好过汇编语言一个道 理。
对于Create和Update操作来说,由于普通的Java程序员未必会使用JDBC的Batch的功能,所以Hibernate会表现出超过JDBC的运行速度。
对于Read的操作来说,ORM普遍都会带有双层缓冲,即PrepreadStatement缓冲和ResultSet缓冲,而JDBC本身没有缓 冲机制,在使用连接池的情况下,一些连接池将会提供PrepreadStatement缓冲,有的甚至提供ResultSet缓冲,但是普遍情况 下,Java程序员一般都不会考虑到在写JDBC的时候优化缓冲,而且这样做也不太现实,所以在某些情况下,ORM会表现出超过JDBC的Read速度。

转载于:https://www.cnblogs.com/next-open/p/3538671.html

简述 Hibernate 和 JDBC 的区别、优缺点相关推荐

  1. hibernate与mybatis的区别优缺点对比

    现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来 ...

  2. hibernate和jdbc的优缺点,概述

    1.分析hibernate和jdbc的优缺点 jdbc的优点和缺点 缺点 1.查询代码特别繁琐 2.重复性代码特别多,频繁的try,catch 3.没有做到数据的缓存 4.sql的移植性不好(mysq ...

  3. Hibernate和JDBC、EJB比较

    参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App S ...

  4. JNDI 和JDBC的区别

    1.JNDI 和JDBC的区别和联系. 两者都是API,是一个标准.并不是什么产品或方法. JDBC 全称:Java Database Connectivity 以一种统一的方式来对各种各样的数据库进 ...

  5. spring 同时配置hibernate and jdbc 事务

    http://blog.csdn.net/mypop/article/details/6120377 在项目中同时用到了JDBC和Hibernate,分别配置了各自的事务,同时配置了不同的tx:ann ...

  6. 我们如何意外地将Hibernate的JDBC流量增加了一倍

    这篇文章描述了我最近使用Hibernate ORM的经验. 多年以来,该框架并没有让我感到惊讶,您可能会在使用它时遇到性能问题. 我以为我已经看完了,但是这次我又措手不及了. 该问题的基础是在对一个完 ...

  7. 作为一个程序员,hibernate和jdbc 有什么不一样的点,你知道吗

    1.hibernate和jdbc主要区别就是,hibernate先检索缓存中的映射对象( 即hibernate操作的是对象),而jdbc则是直接操作数据库. 2.Hibernate是JDBC的轻量级的 ...

  8. Hibernate save()与persist()区别

    本文章来给各位同学介绍一下Hibernate save()与persist()区别,希望此文章能对各位同学对于Hibernate save()与persist()有所理解. Hibernate 之所以 ...

  9. 微型直流减速电机简述:无刷电机与有刷电机区别分析

    参考文献 [1] 刘爱民, 倪元相. 电机与拖动技术[M]. 第二版. 大连:大连理工大学出版社, 2017. [2] 王爱元. 控制电机及其应用[M]. 第一版. 上海:上海交通大学出版社, 201 ...

最新文章

  1. 单机结构 集群结构 分布式结构
  2. Spring + Struts + Hibernate联合开发(多对一关系)
  3. Java“地铁”表(JavaFX)
  4. mysql sqlserver schema_MySQL数据库数据迁移到SQLserver
  5. 在微软5年,我学到的几个小技能
  6. 一步一步写算法(之合并排序)
  7. ELK日志分析系统部署
  8. 中老年人旅行有多狂野
  9. java方法重载与返回值类型无关
  10. Android Intent FLAG标识
  11. oracle+clod+和bolb,Azure存储Blob类型(CloudBlobContainer,CloudBlobClient等)和线程安全
  12. B、BL、BX、BLX 和 BXJ
  13. Cannot enable Hyper-V service
  14. 图形学基础笔记III:图形管线中的多边形裁剪算法、Sutherland-Hodgman、Guard Band Clipping
  15. R语言问题解决: 不存在叫‘xxx’这个名字的程辑包
  16. 计算机数值模拟软件有哪些,数值模拟软件介绍及使用.ppt
  17. jQuery-动画效果
  18. VR全景的拍摄与制作
  19. PostgreSQL安装以及和mysql的对比
  20. FUJINON镜头伺服器EPD-21A-A02拆机记录

热门文章

  1. python3通过pyhive连接hive
  2. Python算法实战视频课程--栈的应用-刘硕-专题视频课程
  3. 微信抢红包的算法架构总结
  4. win10无法检测java_win10下配置JAVA环境变量(以及错误: 找不到或无法加载主类的处理方法)...
  5. Socket网络程序设计:模拟QQ聊天室
  6. Burpsuite—Intruder模块详解
  7. php 之循环、数组操作函数
  8. python字符串的内置函数_python内置函数字符串
  9. MQTT协议详解 一、MQTT简介
  10. 一个程序教你花式示爱 2——99颗闪耀的真爱钻石