论坛首页 Java企业应用论坛

Hibernate,JDBC性能探讨

浏览 11515 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2010-08-21  
mikewang 写道
出了batch 以外

jdbc 插入的代码写也有问题。

你那个写法, 每个insert 都要启动和提交一个事务

调用 conn.startTranscation()
然后在执行 insert
最后 conn.commit()

改成这样, jdbc 估计就比hibernate 快10倍了


和我的理解一样的
默认是自动commit,所以每一条语句都是一个事务
jdbc有10000个事务
而hibernate只有一个
所以jdbc比hibernate慢就正常了

老实说,这个争论hibernate还是jdbc快没有什么意义

经验证明,往往在应用中过早考虑此问题,实际上这个根本不是未来的性能缺陷所在,反而使用hibernate带来开发上节省的时间比解决性能问题的时间效益高
1 请登录后投票
   发表时间:2010-08-21  
JDBC绝对比hibernate快,毋庸置疑!
0 请登录后投票
   发表时间:2010-08-21  
。。。。事务。。。。。。。
你要是每提交一次一个事务我敢保证不快,毫无疑问。
0 请登录后投票
   发表时间:2010-08-21  
批量操作的效率是挺高的。
0 请登录后投票
   发表时间:2010-08-21  
Hibernate在底层也是利用了JDBC来操作数据库的,只不过它操作的方式可能与我们通常使用的JDBC方式不太一样,研究一下
0 请登录后投票
   发表时间:2010-08-21  
首先得说jdbc肯定比hibernate快
这里楼主的程序写的不好,如果把jdbc改成batch提交  我想时间应该就很短了

现在来具体分析下:

jdbc测试:
没insert一条记录  就跟数据库打交道一次 ,这里一共连接了1000次数据库 光是连接数据库的时间就已经很长了

hibernate测试:
for(int i=0;i<1000;i++){
    。。。。
    session.save() ;
}


在这个过程中session保存对象时 ,是放在了session中 ,此时还没有真正的持久化到数据库,
在最后执行commit的时候,才真正的持久化到数据库 ,所以这1000个对象在同一时候被持久化到数据库中
在效率上来说 可想而知了


简单的说就是一桶水 ,执行jdbc的时候,每一次取一小瓢放到缸里

hibernate执行时,直接把一桶水倒到缸里 ,这样的测试当然是hibernate快了

小弟不才  哈哈哈哈哈哈哈哈哈

1 请登录后投票
   发表时间:2010-08-21  
此贴体现了框架存在的意义之一
0 请登录后投票
   发表时间:2010-08-21  
hibernate自己能插入数据库?还不得转化成数据库的sql。就转化这个过程就比jdbc多了个步骤,效率怎么会比jdbc快呢?还是看看你的jdbc操作,然后看看hibernate中转化成jdbc的操作吧
0 请登录后投票
   发表时间:2010-08-21  
又一个蛋痛帖,先搞清楚hibernate底层不还是调用jdbc,在运用合理情况下性能区别能有多大?
0 请登录后投票
   发表时间:2010-08-21  
通过楼主的测试代码可以看出来:
1. lz只是"了解" jdbc,连熟悉都算不上
2. lz只是"了解" hibernate, 连熟悉都算不上, 甚至连基本的hibernate文档都没有读过, 是"读过", 那眼睛扫过不算.
这样的人竟然还来比较二者的性能??
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics