最近 からOpenJPA
に変換されたプロジェクトがありHibernate
ます。に固有の構成の部分を置き換える際に、 でOpenJPA
複製できない 1 つの機能に出くわしましたHibernate
。
ではOpenJPA
、エンティティに で注釈を付け@Strategy
、 のインスタンスを提供することにより、カスタム削除を実行していましたorg.apache.openjpa.jdbc.meta.strats.AbstractStrategy
。このcustomDelete
メソッドでは、単一の共有ストアド プロシージャを呼び出し、テーブル名、エンティティ ID、およびアクションを実行するユーザー ID を渡しました。このプロシージャは、エンティティを削除し、監査ログ エントリを作成します。
ではHibernate
、使用可能なフックがいくつか見つかりますが、同じ機能を提供するものはないようです。私は以下を見てきました:
@SQLDelete("customer delete query") - このオプションは、テーブル名やユーザー ID ではなく ID へのアクセスのみを許可するため、クラスごとにカスタマイズされ、まだ情報が不足しています
EntityListener クラス - このオプションは、エンティティが削除されたことを示しますが、実際に関与していたテーブルを取得するために掘り下げる必要があり、単一の db 操作の範囲外です
EntityLister
OpenJPA メソッドにより近い他のオプションはありますか?それとも、テーブル名を決定するために、クラスを使用して独自の重い作業を行うのが最善の策ですか?