0

Springには、トランザクションコンテキストの終了時に、エンティティのメソッドまたは各エンティティのエンティティリスナーを呼び出すためのフックがありますか?

SpringとHibernateを使用して、検索用にインデックスを作成する一連のエンティティを管理しています。現在、Hibernateの@PreUpdateメソッドでエンティティリスナーを使用して、エンティティが作成または変更されたときにインデックスの再作成を実行しています。もちろん、このイベントは、エンティティ自体のプロパティ(つまり、データベース行の値)の1つ以上が更新された場合にのみ発生します。

この問題は、エンティティに重要な子プロパティの@OneToManyマッピングがある場合に発生します。これらの子プロパティの1つが更新されると、PreUpdateコールバックは親エンティティで呼び出されません。

プロパティがいつ更新されるかはすでに追跡していますが、すべての更新が完了するまで待ってから、インデックスの再作成をトリガーします。このようなインデックスの再作成を行うのに最適な場所はどこですか?PreUpdateはほとんどの場合うまく機能しますが、このしわにより、エンティティが@Transactionalスコープを離れるときにフックがあったのではないかと思いました。または、OneToManyの子が永続化されたときに、親でコールバックをトリガーするHibernateの方法はありますか?

4

1 に答える 1

1

アスペクトは救助のためだと思います。セクション10.5.8を参照してください。トランザクション操作のアドバイス春のドキュメントでトランザクション操作をアドバイスすると、@ Transactionalメソッドに関する側面を記述してから、インデックス作成を行うのに役立ちます。

于 2012-07-13T05:17:54.437 に答える