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. 【ZZ】Python的主(main)函数问题
  2. Codeforces Round #700 (Div. 1Div. 2)
  3. leetcode 970. 强整数(Powerful Integers)
  4. android 搜索工具栏,Android记事本在菜单栏添加搜索按钮方法
  5. Spark API 详解/大白话解释 之 map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
  6. 目录:关于【稳定性建设之道】大纲速览
  7. jquery的get和post请求
  8. 3月19日学习内容整理:redis
  9. WDS部署服务所用的PXE引导文件
  10. 贺利坚老师汇编课程66笔记:自定义除法中断学习如何编制中断程序
  11. 专业FTP服务器Rumpus for Mac
  12. PT1000 电桥测温
  13. android微信post提交表单,微信自带浏览器不支持form表单post提交方案解决
  14. 祝愿大家未来顺利平安
  15. 打开Windows任务管理器的七种方法
  16. Vue Whitelabel Error Page错误
  17. 已知两边和夹角求第三边长_已知任意三角形的两边和夹角,怎样用三角函数求出第三边的长度...
  18. 基于R语言的聚类分析(k-means,层次聚类)
  19. LinuxShell宝典
  20. [益智]:空姐分配物品

热门文章

  1. JS合并两个数组的方法介绍
  2. 英文求职信个人资料常用语
  3. Java基本类型和包装类型总结
  4. linux-help命令,查询shell内置命令帮助文档
  5. Android一串数字分两段,底部对齐字号不同
  6. Hive查看表的详细信息
  7. 腾讯后台研发暑期实习offer经历
  8. JavaScript实现“打地鼠”游戏开发(3)——锤子的显示及游戏音效的添加(基于H5+CSS3+JS+jQuery实现)
  9. RUI topic 4
  10. list,each联用遍历数组