BPm*_*BPm 23 java spring hibernate jpa
如果我这样做会有什么不同:
@Transactional
public void processData() {
List<MyEntity> entities = ....;
MyEntityRepository.save(entities);
}
Run Code Online (Sandbox Code Playgroud)
与
@Transactional
public void processData() {
List<MyEntity> entities = ....;
for (MyEntity entity : entities) {
MyEntityRepository.save(entity);
}
}
Run Code Online (Sandbox Code Playgroud)
底层查询和性能有什么区别?
Ori*_*Dar 23
来自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;
}
Run Code Online (Sandbox Code Playgroud)
因此,您的第二个业务方法只会影响save(Iterable<S> entities)
Crud Repository方法,因为它会迭代列表并save(S)
代表您进行调用.
只要事务与processData
业务方法划分开来,性能或执行的查询就没有真正的区别.
repository.saveAll
对于 SpringData Jpa,一种更简洁的方法是for
使用repository.save
. saveAll
将自动遍历列表并保存它。
saveAll
是JpaRepository的一部分,所以不需要定义任何方法。
归档时间: |
|
查看次数: |
32712 次 |
最近记录: |