JDBC与Hibernate性能对比及特点分析.pdfVIP

  • 0
  • 0
  • 约1.02万字
  • 约 6页
  • 2026-02-09 发布于北京
  • 举报

JDBC与Hibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易

学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,

JDBC有优势。

相同点:

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

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

闭。

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

不同点:

◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的SQL语言,

Hibernate使用的是HQL(Hibernatequerylanguage)语言

◆操作的对象不同: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无论如何都是最快的。

二、HibernateList和Iterator适用的场合不同,不存在孰优孰劣的问题

HibernateIterator是JDBCResult的封装,HibernateList是Scrollable

Result的封装,所以,如果在Oracle或者DB2上面做同样的Read测试,如果

结果集小于FetchSize,两者在速度上应该都不会有差别;如果结果集大于

FetchSize的话,但是不是FetchSize的很多倍,速度应该是:

JDBCScrollableResult(消耗时间最少)HibernateListJDBCResult

HibernateIterator

如果结果集非常大,但是只取结果集中的部分记录,那么速度:

JDBCResultHibernateIteratorJDBCScrollableResultHibernate

List

为了避免造成误导,我最后强调一下我的结论:

一、“精心编写”的JDBC一定是性能

实际上,不管CMP,Hibernate,JDO等等,所有的ORM都是对JDBC的封装,

CMP则是一个重量级封装,JDO

文档评论(0)

1亿VIP精品文档

相关文档