CrudRepository和Hibernate:在事务中保存(List )vs save(Entity)
如果我这样做会有什么不同:
@Transactional public void processData() { List entities = ....; MyEntityRepository.save(entities); }
与
@Transactional public void processData() { List entities = ....; for (MyEntity entity : entities) { MyEntityRepository.save(entity); } }
底层查询和性能有什么区别?
来自SimpleJpaRepository
:
@Transactional public List More save(Iterable entities) { List result = new ArrayList(); if (entities == null) { return result; } for (S entity : entities) { result.add(save(entity)); } return result; }
因此,您的第二个业务方法只会影响save(Iterable
Crud Repository方法,因为它迭代列表并代表您调用 entities)save(S)
。
只要事务与processData
业务方法划分开来,性能或执行的查询就没有真正的区别。