Hibernate 如何使用JPA EntityManager提高批插入的性能?

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

这就是我在JPA中使用EntityManager进行批量插入的方式。批次大小当前设置为50。我不能为每个批大小调用commit。要么提交整个事务,要么什么都不提交

另一个类中的单独方法正在调用方法bulkInsert(),并将其标记为@Transactional

如何使插入更快?我正在插入多达20万行

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