对于MySql INNODB、Sql Server等数据库而言,每单独执行一个SQL语句,都是一个事务。为什么每秒只剩下50条记录了?因为,在INNODB存储下,每执行一次INSERT操作,都要经历BEGIN Transaction、INSERT、COMMIT Transaction操作,也就是,第三种测试案例,实际上是提交了1000个事务。这个不用hibernate,而直接在mysql、sql server等数据库中,用 begin trans insert 1000 times commit 以及 insert 1000 times 执行,观察其消耗时间就知道了。注意后者的insert语句外部没有带事务。 这是数据库本身机制决定的,和hibernate还是用JDBC没有关系。同时也解释了为什么myisam下,单独执行1000个insert语句,不用事务也很快的原因,因为它根本不用事务。