Springベースのアプリケーションでは、1つのテーブルが更新されるたびに、いくつかのデータベース(MySQL)テーブルを更新したいと思います。ロジックは複雑なので、データベーストリガーに依存することはできません。ロジックをJavaで実装したいと思います。関数をトリガーするコードがあります。Spring Custom Eventsに出くわし、コードをより構造化するためにそれらを使用することを検討していました。インスタンスでtable1が更新されるたびに、Repository
別のテーブルも更新するイベントがトリガーされると考えていました。現在、私は手動で呼び出す必要のある他のデータベーステーブルRepository
のリポジトリを持っています。@Autowired
より構造化された実装ロジックを入手できますか?
- ドキュメントには、イベントは同期的であると記載されています。呼び出されるイベントリスナーの呼び出しの順序は何ですか?
サイクルで終わることはできますか?サイクルを防ぐにはどうすればよいですか?簡単なアイデア。編集:リスナーで別のイベントを公開しない限り、サイクルは問題にならないでしょう。
余談ですが、
@Autowired
すべてのリポジトリにエンティティマネージャインスタンスがあります。これらのエンティティマネージャインスタンスは、すべてのリポジトリですべて同じですか?設定ファイルは次のようになります。編集:同じトランザクションの一部になるために、すべてのオブジェクトを同じエンティティマネージャーインスタンスに永続化する必要があるかどうかを理解するようにこれを求めています。私のエンティティマネージャーインスタンスには注釈が付けられて@PersistenceContext
います。アノテーションを使用して宣言されたときにエンティティマネージャーがシングルトンスコープを持っていると仮定するのは正しいですか?
編集:念のため@Transactional
、すべてのリポジトリクラスに注釈を付けています。