锁定老帖子 主题:Hibernate,JDBC性能探讨
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-21
mikewang 写道 出了batch 以外
jdbc 插入的代码写也有问题。 你那个写法, 每个insert 都要启动和提交一个事务 调用 conn.startTranscation() 然后在执行 insert 最后 conn.commit() 改成这样, jdbc 估计就比hibernate 快10倍了 和我的理解一样的 默认是自动commit,所以每一条语句都是一个事务 jdbc有10000个事务 而hibernate只有一个 所以jdbc比hibernate慢就正常了 老实说,这个争论hibernate还是jdbc快没有什么意义 经验证明,往往在应用中过早考虑此问题,实际上这个根本不是未来的性能缺陷所在,反而使用hibernate带来开发上节省的时间比解决性能问题的时间效益高 |
|
返回顶楼 | |
发表时间:2010-08-21
JDBC绝对比hibernate快,毋庸置疑!
|
|
返回顶楼 | |
发表时间:2010-08-21
。。。。事务。。。。。。。
你要是每提交一次一个事务我敢保证不快,毫无疑问。 |
|
返回顶楼 | |
发表时间:2010-08-21
批量操作的效率是挺高的。
|
|
返回顶楼 | |
发表时间:2010-08-21
Hibernate在底层也是利用了JDBC来操作数据库的,只不过它操作的方式可能与我们通常使用的JDBC方式不太一样,研究一下
|
|
返回顶楼 | |
发表时间: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快了 小弟不才 哈哈哈哈哈哈哈哈哈 |
|
返回顶楼 | |
发表时间:2010-08-21
此贴体现了框架存在的意义之一
|
|
返回顶楼 | |
发表时间:2010-08-21
hibernate自己能插入数据库?还不得转化成数据库的sql。就转化这个过程就比jdbc多了个步骤,效率怎么会比jdbc快呢?还是看看你的jdbc操作,然后看看hibernate中转化成jdbc的操作吧
|
|
返回顶楼 | |
发表时间:2010-08-21
又一个蛋痛帖,先搞清楚hibernate底层不还是调用jdbc,在运用合理情况下性能区别能有多大?
|
|
返回顶楼 | |
发表时间:2010-08-21
通过楼主的测试代码可以看出来:
1. lz只是"了解" jdbc,连熟悉都算不上 2. lz只是"了解" hibernate, 连熟悉都算不上, 甚至连基本的hibernate文档都没有读过, 是"读过", 那眼睛扫过不算. 这样的人竟然还来比较二者的性能?? |
|
返回顶楼 | |