java – Native List在Jpa/hibernate Spring中插入查询

前端之家收集整理的这篇文章主要介绍了java – Native List在Jpa/hibernate Spring中插入查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想在我的数据库中插入一个对象列表.在特殊情况下,我知道他们的主键(不是自动生成的)不存在.由于我需要插入一个大集合,因此save(Iterable< Obj>对象)会变慢.

因此,我考虑使用本机查询. native insert query in hibernate + spring data

在上一个答案中,它没有说明如何插入对象集合.这可能吗?

@Query("insert into my_table (date,feature1,feature2,quantity) VALUES 

当然,如果你有一个更好的整体解决方案,它甚至更好.

最佳答案
我最终实现了自己的存储库.这个性能非常好,2s而不是35s之前插入50000个元素.这段代码的问题在于它不会阻止sql注入.

我还尝试使用setParameter(1,…)构建一个查询,但不知何故,JPA需要很长时间才能完成.

class ObjectRepositoryImpl implements DemandGroupSalesOfDayCustomRepository {

    private static final int INSERT_BATCH_SIZE = 50000;

    @Autowired
    private EntityManager entityManager;

    @Override
    public void blindInsert(ListsqlForObj).collect(joining(","));
         String insertsql = "INSERT INTO mytable (date,quantity) VALUES ";
         entityManager.createNativeQuery(insertsql + values).executeUpdate();
         entityManager.flush();
         entityManager.clear();
    }

    private String rendersqlForObj(Object obj) {
        return "('" + obj.getDate() + "','" +
            obj.getFeature1() + "','" +
            obj.getFeature2() + "'," +
            obj.getQuantity() + ")";
    }
}

猜你在找的Spring相关文章