日期:2014-05-16  浏览次数:20470 次

求教:hibernate在简单表的插入速度和JDBC插入速度相差多远?请指教。
求教:hibernate在简单表的插入速度和JDBC插入速度相差多远?请指教。

我在自己的机器上测试的结果是相差很大。

JDBC插入可以有1500/S,而hibernate只有400/S,

感到很奇怪,到底是我自己用错了hibernate?还是在简单插入的情况下,

hibernate的确是这样的?

测试的条件如下:

机器:P4 2.66 / 1G MM。
操作系统: XP SP2
数据库:MS Sql 2000个人版
hibernate: 3.0.5
JDBC驱动:微软提供的。

表的字段:id,name,desp

两者JAVA普通应用程序。

代码为:

JDBC:

for(int i = 1; i <= 10001; i++)
{
String strSql = "insert into Items values(";
strSql += i;
strSql += ", 'XXXXX', 'XXXXXXX')";
Statement stat = con.createStatement();
stat.executeUpdate(strSql);
}


Hibernate:

Item item = new Item();
item.setName("XXXX");
item.setDescription("lalalalal");

Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
session.persist(item);
session.save(item);
transaction.commit();
session.close();
1 楼 歆渊 2007-01-04  
ORM的裸性能相对于直接JDBC就是比较差的, 基本上启用缓存的读性能才会有比较大提升.
可以看看 http://www.polepos.org 评测框架.
2 楼 ahuaxuan 2007-01-04  
楼主 把hibernate的那段事务的代码去掉再试试,我看你的jdbc代码中没有用事务,而hibernate代码中使用了事务,这样可能会有影响速度的。
3 楼 simec 2007-01-05  
明白。