日期:2014-05-16 浏览次数:20919 次
同样是插入,差别咋就这大呢?
操作系统:wubi ubuntu 12.04 (precise) 32 位
内核: Linux 3.2.0-33-generic-pae
内存:4GB
cpu:Intel? Core?2 Duo CPU T6570 @ 2.10GHz × 2
mysql:版本5.5.28-0ubuntu0.12.04.2, innodb,本地服务
h2: 版本1.3.169, 嵌入式
插入数据:1656行,id自动增长
数据库 | 持久层 | 操作方式 | 耗时(ms) |
mysql | hibernate | 循环调用save插入 | 127910 |
mysql | hibernate | saveOrUpdateAll插入 | 4499 |
mysql | jdbcTemplate | 循环调用update插入 | 3045 |
mysql | jdbcTemplate | 调用update一次插入全部value | 2295 |
h2 | hibernate | 循环调用save | 3529 |
h2 | hibernate | saveOrUpdateAll | 2037 |
h2 | jdbcTemplate | 循环调用update插入 | 796 |
h2 | jdbcTemplate | 调用update一次插入全部value | 610 |
#hibernate.connection.driver_class = com.mysql.jdbc.Driver #hibernate.connection.url = jdbc:mysql://127.0.0.1:3306/emds?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true #hibernate.connection.username = mysql #hibernate.connection.password = mysql #hibernate.dialect = org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class = org.h2.Driver hibernate.connection.url = jdbc:h2:db/emds_db hibernate.connection.username = h2 hibernate.connection.password = h2 hibernate.dialect = org.hibernate.dialect.H2Dialect hibernate.show_sql = true hibernate.format_sql = false hibernate.batch_size = 20 hibernate.hbm2ddl.auto = update hibernate.cglib.use_reflection_optimizer = true hibernate.cache.use_second_level_cache = false hibernate.cache.use_query_cache = true hibernate.cache.provider_class = org.hibernate.cache.EhCacheProvider
model
package com.emds.model; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import com.emds.util.DateUtil; @Entity @Table(name="air_quality_data") public class AirQualityData { public enum DataType{ AllAirQuality((short)1); private short dataType; DataType(short dataType){ this.dataType = dataType; } public short getDataType(){ return dataType; } } @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; @Column(name="area", length=20, nullable=false) private String area; @Column(name="type", nullable=false) private short type; @Column(name="time", columnDefinition="DATETIME") private Date time; @Column(name="index_name", length=20, nullable=false) private String indexName; @Column(name="index_value", length=20, nullable=false) private String indexValue; @Override public String toString(){ return "{" + id + " " + area + "\t" + DateUtil.dateToStr_yyyy_MM_dd_HH_mm(time) + "\t" + indexName + "\t" + indexV