Java 8 forEachループ内でSpring Data JPAリポジトリを使用できますか?スレッドセーフですか?Java 8 forEachループ内でSpring Data JPAリポジトリを使用するのはスレッドセーフですか?
public interface MajorModOptRepository extends CrudRepository<MajorModOpt, Long> {
Set<MajorModOpt> findManyByManCodeAndModCode(String manCode, String modCode);
}
そしてここで、foreachループです:
@Component
public class MajorModOptsHelper {
@Autowired
private MajorModOptRepository majorModOptRepository;
public void setMajorOpts(@NonNull List<Vehicle> vehicles) {
vehicles.forEach(this::setMajorOpts);
}
// This method is called by above forEach
public void setMajorOpts(Vehicle vehicle) {
...
// Repository method is called here
Set<MajorModOptVO> knownOpts = majorModOptRepository.findManyByManCodeAndModCode(vehicle.getManCode(), vehicle.getModCode());
...
}
}
は、事前にありがとうございます。
コレクションに対して 'forEach'を呼び出すときに、マルチスレッドが含まれていません。念頭に置いておくべきことは、 'ArrayList'や' HashSet'のような特定のコレクションは反復処理中に変更してはいけませんが、 'Iterator'ベースの' for'ループを使用する場合は同じです。 – Holger
スレッドセーフです。しかし、それにもかかわらず、私はあなたがしようとしているヘルルワの悪い事にもっと惹かれます。そして、それは 'forEach'の中で' findManyByManCodeAndModCode'メソッドを呼び出すだけです。 :) –