jpaSaveAll源码
@Transactional @Override public <S extends T> List<S> saveAll(Iterable<S> entities) { Assert.notNull(entities, "Entities must not be null!"); List<S> result = new ArrayList<S>(); for (S entity : entities) { //其次要外围则是save办法 result.add(save(entity)); } return result; }// save办法 @Transactional @Override public <S extends T> S save(S entity) {// 每次进来则是须要查问是否存在这个对象 if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(entity); } }
6.4.1 批量插入
解决方案是本人用em进行长久化插入,省了一步查问操作。
@PersistenceContext
private EntityManager entityManager;
@Override
@Transactional(rollbackFor = Exception.class)
public void addBatch(List list) {
for (ProjectApplyDO projectApplyDO : list) {
entityManager.persist(projectApplyDO);//insert插入操作
}
entityManager.flush();
entityManager.clear();
}
6.4.2 批量更新
在确保数据曾经存在的状况下,如果是批量更新能够如下代码代替下面的entityManager.persist(projectApplyDO);语句:
entityManager.merge(projectApplyDO);//update更新操作