Hibernate 如何使用JPA EntityManager提高批插入的性能?
这就是我在JPA中使用EntityManager进行批量插入的方式。批次大小当前设置为50。我不能为每个批大小调用commit。要么提交整个事务,要么什么都不提交 另一个类中的单独方法正在调用方法bulkInsert(),并将其标记为@Transactional 如何使插入更快?我正在插入多达20万行Hibernate 如何使用JPA EntityManager提高批插入的性能?,hibernate,jpa,entitymanager,hibernate-entitymanager,Hibernate,Jpa,Entitymanager,Hibernate Entitymanager,这就是我在JPA中使用EntityManager进行批量插入的方式。批次大小当前设置为50。我不能为每个批大小调用commit。要么提交整个事务,要么什么都不提交 另一个类中的单独方法正在调用方法bulkInsert(),并将其标记为@Transactional 如何使插入更快?我正在插入多达20万行 class MyRepo{ @PersistenceContext private EntityManager em; @Value(value = "${batch_size
class MyRepo{
@PersistenceContext
private EntityManager em;
@Value(value = "${batch_size}")
private int batchSize;
@Override
public List<Object> bulkInsert(List<Object> objects) {
IntStream.range(0, objects.size()).forEach(index -> {
em.persist(objects.get(index));
if (index + 1 % batchSize == 0) {
em.flush();
em.clear();
}
});
em.flush();
em.clear();
return objects;
}
}
通过使用JDBC,可以更快地进行插入,因此对象不会被持久性机制“管理”,因此开销要小得多。然后你用JPA来代替它的用途。。。持久化、更新、删除和查询。。。但不是批量,谢谢,你能提供一个例子或参考一些链接吗?你的意思是这样的-你启用了JDBC批量插入吗?你是怎么做到的?
spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1
spring.datasource.tomcat.validation-interval=0