hibernate缺点有哪些(Hibernate与jdbc哪个好各自的优点和缺点)

2025-06-26 16:00:01 0

hibernate缺点有哪些(Hibernate与jdbc哪个好各自的优点和缺点)

大家好,如果您还对hibernate缺点有哪些不太了解,没有关系,今天就由本站为大家分享hibernate缺点有哪些的知识,包括Hibernate与jdbc哪个好各自的优点和缺点的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

Hibernate与jdbc哪个好各自的优点和缺点

一、 Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口 的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。
二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。
三、Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而 不是Entity Bean的替代者出现的,让我再列一次我已经列n次的框架结构:
传统的架构:
1) Session Bean 《-》 Entity Bean 《-》 DB
为了解决性能障碍的替代架构:
2) Session Bean 《-》 DAO 《-》 JDBC 《-》 DB
使用Hibernate来提高上面架构的开发效率的架构:
3) Session Bean 《-》 DAO 《-》 Hibernate 《-》 DB
就上面3个架构来分析:
1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。
2、运行效率: 如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语 句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此Hibernate架构表现出最快的运行效率。 EB的架构效率会差的很远。
3、开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。但是在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之,而EB架构很可能会失败。
4、分布式,安全检查,集群,负载均衡的支持 由于有SB做为Facade,3个架构没有区别。
四、EB和Hibernate学习难度在哪里?
EB的难度在哪里?不在复杂的XML配置文件上,而在于EB运用稍微不慎,就有严重的性能障碍。所以难在你需要学习很多EJB设计模式来避开性能问题,需要学习App Server和EB的配置来优化EB的运行效率。做EB的开发工作,程序员的大部分精力都被放到了EB的性能问题上了,反而没有更多的精力关注本身就主要投入精力去考虑的对象持久层的设计上来。
Hibernate难在哪里?不在Hibernate本身的复杂,实际上Hibernate非常的简单,难在Hibernate太灵活了。 当你用EB来实现持久层的时候,你会发现EB实在是太笨拙了,笨拙到你根本没有什么可以选择的余地,所以你根本就不用花费精力去设计方案,去平衡方案的好 坏,去费脑筋考虑选择哪个方案,因为只有唯一的方案摆在你面前,你只能这么做,没得选择。Hibernate相反,它太灵活了,相同的问题,你至少可以设 计出十几种方案来解决,所以特别的犯难,究竟用这个,还是用那个呢?这些方案之间到底有什么区别呢?他们的运行原理有什么不同?运行效率哪个比较好?光是 主键生成,就有七八种方案供你选择,你为难不为难?集合属性可以用Set,可以用List,还可以用Bag,到底哪个效率高,你为难不为难?查询可以用 iterator,可以用list,哪个好,有什么区别?你为难不为难?复合主键你可以直接在hbm里面配置,也可以自定义CustomerType,哪 种比较好些?你为难不为难?对于一个表,你可以选择单一映射一个对象,也可以映射成父子对象,还可以映射成两个1:1的对象,在什么情况下用哪种方案比较 好,你为难不为难? 这个列表可以一直开列下去,直到你不想再看下去为止。当你面前摆着无数的眼花缭乱的方案的时候,你会觉得幸福呢?还是悲哀呢?如果你是一个负责的程序员, 那么你一定会仔细研究每种方案的区别,每种方案的效率,每种方案的适用场合,你会觉得你已经陷入进去拔不出来了。如果是用EB,你第一秒种就已经做出了决 定,根本没得选择,比如说集合属性,你只能用Collection,如果是Hibernate,你会在Bag,List和Set之间来回犹豫不决,甚至搞 不清楚的话,程序都没有办法写。
补充: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缓冲。最终结论:
由于MySQL的JDBC驱动的重大缺陷,使得测试结果变得毫无意义,不具备任何参考价值,只是我们能够大概判断出一些结论:
一、精心编写的JDBC无论如何都是最快的。
二、Hibernate List和Iterator适用的场合不同,不存在孰优孰劣的问题
我个人认为Hibernate Iterator是JDBC Result的封装,Hibernate List是Scrollable Result的封装,所以我推测,如果在Oracle或者DB2上面做同样的Read测试,如果结果集小于FetchSize,4者在速度上应该都不会有 差别;如果结果集大于FetchSize的话,但是不是FetchSize的很多倍,速度排名应该是:
JDBC Scrollable Result (消耗时间最少) 《 Hibernate List 《 JDBC Result 《 Hibernate Iterator
如果结果集非常大,但是只取结果集中的部分记录,那么速度排名:
JDBC Result 《 Hibernate Iterator 《 JDBC Scrollable Result 《 Hibernate List
为了避免造成误导,我最后强调一下我的结论:
一、“精心编写”的JDBC一定是性能最好的
实际上,不管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速度。
二、Hibernate List和Iterator方式的比较
JDBC与Hibernate在测试中想要重点考察的方面是 List与Iterator,但是由于JDBC驱动问题,结果变的很不可信,不过仍然可以得到一些有用的结论。
Read操作包括两步:第一步是把数据库的数据取出,构造结果集,把数据放入到结果集中;第二步是遍历结果集,取每行数据。
List方式是1次性把所有的数据全部取到内存中,构造一个超大的结果集,主要的时间开销是这一步,这一步的时间开销要远远超过JDBC和 Iterator方式下构造结果集的时间开销,并且内存开销也很惊人;而对结果集的遍历操作,速度则是非常的惊人(从上面的测试结果来看,30万记录的内 存遍历不到100ms,由于这一步不受JDBC影响,因此结果可信)。因此,List方式适合于对结果集进行反复多次操作的情况,例如分页显示,往后往前 遍历,跳到第一行,跳到最后一行等等。
Iterator方式只取记录id到内存中,并没有把所有数据取到内存中,因此构造结果集的时间开销很小,比JDBC和List方式都要少,并且内 存开销也小很多。而对结果集的遍历的操作的时候,Iterator仍然要访问数据库,所有主要的时间开销都花在这里。因此,Iterator方式适合于只 对结果集进行1次遍历操作的情况,并且Iterator方式特别适合于从超大结果集中取少量数据,这种情况Iterator性能非常好。
另外Iterator方式可以利用JCS缓冲,在使用缓冲的情况下Iterator方式的遍历操作速度将不受数据库访问速度的影响,得到彻底的提 升。Hibernate Iterator JCS方式应该是最快的,Hibernate List速度与JDBC比较接近,而Hibernate Iterator速度还是慢的离谱。另外JDBC和List受到Fetch Size的影响很大,当Fetch Size大于50的时候,速度有非常显著的提升,而Hibernate Iterator的速度似乎不受Fetch Size的影响。
***隐藏网址***

Hibernate 的级联有什么缺点

1。级联不能说是缺点,只能说有优点,用不好就尽是缺点,所以说Hibernate不适合初级人员使用而以2。级联会带来复杂的关联查询,大多是不必要的,也不好控制,所以不用

hibernate的优缺点是什么

1.Hibernate的优缺点:\x0d\x0a 优点:1、程序更加面向对象;\x0d\x0a 2、提高了生产率;\x0d\x0a 3、方便移植(修改配置文件);\x0d\x0a 4、无侵入性。\x0d\x0a 缺点:\x0d\x0a 1、效率比JDBC略差;\x0d\x0a 2、不适合批量操作。\x0d\x0a\x0d\x0a2.Hibernate有四种查询方案:\x0d\x0a 1、get,load方法,根据id查找对象\x0d\x0a 2、HQL--hibernate query language(查询对象:Query)\x0d\x0a 3、Criteria--标准查询语言(查询对象:Criteria,查询条件:Criterion)\x0d\x0a 4、通过sql来查(查询对象:SQLQuery)

Hibernate与jdbc哪个好各自的优点和缺点的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Hibernate与jdbc哪个好各自的优点和缺点、Hibernate与jdbc哪个好各自的优点和缺点的信息别忘了在本站进行查找哦。

hibernate缺点有哪些(Hibernate与jdbc哪个好各自的优点和缺点)

本文编辑:admin

更多文章:


phpinfo(如何创建和查看phpinfo,phpinfo空白问题解决方法)

phpinfo(如何创建和查看phpinfo,phpinfo空白问题解决方法)

本篇文章给大家谈谈phpinfo,以及如何创建和查看phpinfo,phpinfo空白问题解决方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本

2025年6月10日 05:30

scum单机(scm游戏怎样单机存档)

scum单机(scm游戏怎样单机存档)

这篇文章给大家聊聊关于scum单机,以及scm游戏怎样单机存档对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录scm游戏怎样单机存档单机方舟进化生存怎么弄上帝模式求一个能用的正版SCUM单机修改器,前期真的太难玩了SCUM高达

2026年7月11日 17:30

北京嵌入式培训班(七月份想去北京参加嵌入式培训,目前自己看了几个培训机构:千锋,凌阳,华清远见希望参加过培训的朋友)

北京嵌入式培训班(七月份想去北京参加嵌入式培训,目前自己看了几个培训机构:千锋,凌阳,华清远见希望参加过培训的朋友)

大家好,关于北京嵌入式培训班很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于七月份想去北京参加嵌入式培训,目前自己看了几个培训机构:千锋,凌阳,华清远见希望参加过培训的朋友的知识点,相信应该可以解决大家的一些困惑和问题,如果

2025年6月15日 20:30

sqrt函数用法 vba(excel表格中怎样用根号)

sqrt函数用法 vba(excel表格中怎样用根号)

今天给各位分享excel表格中怎样用根号的知识,其中也会对excel表格中怎样用根号进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录excel表格中怎样用根号Excel怎么使用平方根函数SQRTVB做简易计算器

2025年7月29日 19:30

php中级工程师厉害吗(如何理解php工程师)

php中级工程师厉害吗(如何理解php工程师)

大家好,如果您还对php中级工程师厉害吗不太了解,没有关系,今天就由本站为大家分享php中级工程师厉害吗的知识,包括如何理解php工程师的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录如何理解php工程师php工程

2026年7月27日 03:30

动画制作可以自学吗(自学动画制作可以吗)

动画制作可以自学吗(自学动画制作可以吗)

“动画制作可以自学吗”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看动画制作可以自学吗(自学动画制作可以吗)!本文目录自学动画制作可以吗如何自学动画制作动漫专业可以自学吗,难不难自学动漫设计与制作零基础怎么自学动画制作自学动

2025年5月30日 22:30

whoops的中文是什么(whoops正确读音是什么)

whoops的中文是什么(whoops正确读音是什么)

各位老铁们好,相信很多人对whoops的中文是什么都不是特别的了解,因此呢,今天就来为大家分享下关于whoops的中文是什么以及whoops正确读音是什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录whoop

2026年5月27日 00:00

学ug好还是solidworks好(solidworks与ug哪个更好学)

学ug好还是solidworks好(solidworks与ug哪个更好学)

本篇文章给大家谈谈学ug好还是solidworks好,以及solidworks与ug哪个更好学对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录solidworks与ug哪个更好学solidworks和ug哪个好用学习Solid

2026年4月23日 22:00

intellijidea如何升级(intellij idea 怎么让class自动更新到war)

intellijidea如何升级(intellij idea 怎么让class自动更新到war)

大家好,如果您还对intellijidea如何升级不太了解,没有关系,今天就由本站为大家分享intellijidea如何升级的知识,包括intellij idea 怎么让class自动更新到war的问题都会给大家分析到,还望可以解决大家的问

2026年3月23日 11:00

sweet英语是什么意思?switch不能作用在string上面

sweet英语是什么意思?switch不能作用在string上面

本篇文章给大家谈谈swit,以及sweet英语是什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录sweet英语是什么意思switch

2025年12月28日 17:00

数据库系统工具是什么(请问数据库系统软件有哪些,具体细节介绍一下)

数据库系统工具是什么(请问数据库系统软件有哪些,具体细节介绍一下)

这篇文章给大家聊聊关于数据库系统工具是什么,以及请问数据库系统软件有哪些,具体细节介绍一下对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录请问数据库系统软件有哪些,具体细节介绍一下数据库系统的软件主要包括什么数据库一般用什么软

2026年6月7日 14:45

编程语言与软件之间的关系(编程和软件到底是什么关系)

编程语言与软件之间的关系(编程和软件到底是什么关系)

大家好,如果您还对编程语言与软件之间的关系不太了解,没有关系,今天就由本站为大家分享编程语言与软件之间的关系的知识,包括编程和软件到底是什么关系的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录编程和软件到底是什么关

2026年1月15日 19:15

unity3d入门(unity3d该从何学起)

unity3d入门(unity3d该从何学起)

大家好,如果您还对unity3d入门不太了解,没有关系,今天就由本站为大家分享unity3d入门的知识,包括unity3d该从何学起的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录unity3d该从何学起Unity

2026年7月6日 14:00

protectedimage文件夹删除不了(文件夹删除不了怎么办)

protectedimage文件夹删除不了(文件夹删除不了怎么办)

本篇文章给大家谈谈protectedimage文件夹删除不了,以及文件夹删除不了怎么办对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录文件夹删除不了怎么办电脑文件夹怎么删除不了呢文件夹为什么删除不了桌面上image文件夹是个什

2026年5月12日 12:15

datagridview不可编辑(如何设置datagridview可编辑)

datagridview不可编辑(如何设置datagridview可编辑)

大家好,关于datagridview不可编辑很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何设置datagridview可编辑的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希

2026年7月27日 22:30

individual的所有格(名词是什么意思)

individual的所有格(名词是什么意思)

各位老铁们好,相信很多人对individual的所有格都不是特别的了解,因此呢,今天就来为大家分享下关于individual的所有格以及名词是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录名词是什么意思

2026年5月15日 15:15

设计公司网站设计(专业企业网站设计如何进行)

设计公司网站设计(专业企业网站设计如何进行)

各位老铁们,大家好,今天由我来为大家分享设计公司网站设计,以及专业企业网站设计如何进行的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录专业企业网站设

2025年10月14日 09:45

powermill三轴主轴mtd文件(DXF文件直接转换为G代码,然后三轴雕刻机加工)

powermill三轴主轴mtd文件(DXF文件直接转换为G代码,然后三轴雕刻机加工)

大家好,关于powermill三轴主轴mtd文件很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于DXF文件直接转换为G代码,然后三轴雕刻机加工的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注

2026年7月5日 18:00

html文本区域怎么写(HTML文本区域区域带工具栏怎么做)

html文本区域怎么写(HTML文本区域区域带工具栏怎么做)

大家好,关于html文本区域怎么写很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于HTML文本区域区域带工具栏怎么做的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮

2026年2月6日 21:15

randomize在c语言(c语言怎样产生两个不同的随机数)

randomize在c语言(c语言怎样产生两个不同的随机数)

今天给各位分享c语言怎样产生两个不同的随机数的知识,其中也会对c语言怎样产生两个不同的随机数进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录c语言怎样产生两个不同的随机数C语言中的randomize()函数怎么

2025年11月8日 05:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索