~~~~
如果这样做,会有所不同吗:
@Transactional public void processData() { List<MyEntity> entities = ....; MyEntityRepository.save(entities); }
与
@Transactional public void processData() { List<MyEntity> entities = ....; for (MyEntity entity : entities) { MyEntityRepository.save(entity); } }
在基础查询和性能方面有什么区别?
来自SimpleJpaRepository:
SimpleJpaRepository
@Transactional public <S extends T> List<S> More save(Iterable<S> entities) { List<S> result = new ArrayList<S>(); if (entities == null) { return result; } for (S entity : entities) { result.add(save(entity)); } return result; }
因此,save(Iterable<S> entities)从某种意义上说,您的第二种业务方法仅对Crud Repository方法产生了阴影,它会迭代列表并save(S)代表您进行调用。
save(Iterable<S> entities)
save(S)
只要从您的业务方法中 划定 了 事务processData,性能或执行的查询就没有真正的区别。
processData