3
私は今まで、単一のスレッドアプリケーションで以下のようなリポジトリオブジェクトを使用してきました。複数のスレッドにわたってリポジトリクラスオブジェクトを使用する
@Service
class MyEntityService {
@Autowired
private MyEntityRepository repository;
}
リポジトリには、以下のように見える - 私はエグゼキュータのサービスを介して複数のスレッドを使用して開始し、同時にデータベースへの書き込みを計画し
import com.myorg.mypackage.entities.facebook.MyEntity;
import org.springframework.data.repository.CrudRepository;
public interface MyEntityRepository extends CrudRepository<MyEntity, String> {
MyEntity findByFacebookPageId(String facebookPageId);
}
。リポジトリの複数のインスタンスを作成する必要がありますか、それとも1つのリポジトリが行うのですか?
これらの各メソッドは、暗黙のうちに 'Transactional'でアノテートされており、これはあなたが気にすべきものです。 (あなたが表示しているすべてのコード) - あなたが安全な側にいる、特に*ここではあなたがやっていることはすべてここに読まれているからです。 – Eugene
彼らはスレッドセーフですが、どうにかしてコンテキストを処理する必要があります。理想的には、接続/セッションを各スレッドにバインドして、毎回プールから1つをチェックアウトしないようにします。また、トランザクションで何をしたいのかという質問もあります。すべてのメソッドコールを開いたり閉じたりするのはむしろ遅くなります。何をしているかによっては、マルチスレッドコードをシリアルにする可能性があります。 –