[英]Batch Insert with JPA and Spring
我正在使用Spring Framework和JPA将bean插入数据库。 我需要插入将近8000个实体,这可能会延迟太多。
为什么我应该在Hibernate中禁用“二级缓存” hibernate.cache.use_second_level_cache false
当我在Hibernate中设置“ hibernate.jdbc.batch_size 20”时,它会像这样插入我的bean吗?
INSERT INTO VALUES (1),(2),(3)...(20);
INSERT INTO VALUES (21),(2),(3)...(40);
@Id
@GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY)
private Integer id;
当我在上面使用此标识时,是否禁用了批量插入? 我该如何解决?
在休眠模式下,您不能禁用会话级缓存。 如果您不想要它,请使用StatelessSession 。 这将不会缓存任何内容。
此外,Hibernate文档指定了如何进行批量插入。 看这里 。
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
if ( i % 20 == 0 ) { //20, same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.