entitymanagerを使用して、挿入、更新、削除などを監査します。このために、EJBで動作するEntityManager.classのインターセプタをどうすればできますか?EntityManager.classのインターセプターを行うにはどうすればいいですか
1
A
答えて
6
JPAのcallback methodsおよび/またはentity listenersを使用するだけで、インターセプタを追加する必要はありません。最初のアプローチでは
、あなたはこれらのアノテーションのいずれかで宣言されたエンティティのメソッドに追加:@PrePersist
、@PostPersist
、、@PostUpdate
、@PreRemove
、@PostRemove
、または@PostLoad
。名前は自明のものであり、各イベント(プリ・パーシスト、ポスト・サスティンなど)に対して注釈付きメソッドが呼び出されることを意味します。
2番目のアプローチは似ていますが、メソッドは1つ以上の別々のクラスに実装されており、順番に@EntityListeners
アノテーションを使用してエンティティに追加されます。
第2のアプローチはより柔軟ですが、発生する前後の永続性操作を傍受して、必要な操作を実行することができます。
関連する問題
- 1. spring mvcを使用してインターセプターでプリンシパルを取得するにはどうすればよいですか?
- 2. Delphiでこれを行うにはどうすればいいですか?
- 3. Entity Frameworkでこれを行うにはどうすればいいですか?
- 4. Unityでこれを行うにはどうすればいいですか?
- 5. HTML/CSSでこれを行うにはどうすればいいですか?
- 6. ブログのページでページングを行うにはどうすればいいですか?
- 7. PHPでApacheのサブリクエストを行うにはどうすればいいですか?
- 8. 私はワードプレスでサブクエリを行うにはどうすればいいですか?
- 9. githubでプルリクエストを行うにはどうすればいいですか?
- 10. クローラでページ分割を行うにはどうすればいいですか?
- 11. Spring 3で@CrossOriginアノテーションを行うにはどうすればいいですか?
- 12. Luceneでエンティティ抽出を行うにはどうすればいいですか
- 13. C++デストラクタでガベージコレクションを行うにはどうすればいいですか?
- 14. PHPでコンビナトリアルを行うにはどうすればいいですか?
- 15. アンドロイドアプリで設定を行うにはどうすればいいですか
- 16. RubyMineでリモートデバッグを行うにはどうすればいいですか?
- 17. catchブロックでスイングコールを行うにはどうすればいいですか
- 18. Uiダイアログでコールバックを行うにはどうすればいいですか
- 19. ループで$ _POSTを行うにはどうすればいいですか
- 20. プロローグでタイプチェッカーを行うにはどうすればいいですか?
- 21. 良いSQL検索を行うにはどうすればよいですか?
- 22. URL書き換えを行うにはどうすればいいですか?
- 23. アクティブなスリープを行うにはどうすればいいですか?
- 24. ページリダイレクトでこれを行うにはどうすればよいですか?
- 25. C#でこれを行うにはどうすればよいですか?
- 26. これをプログラムで行うにはどうすればよいですか?
- 27. Grailsで201のリダイレクトを行うにはどうすればよいですか?
- 28. AndroidでNullPointerExceptionのトラブルシューティングを行うにはどうすればよいですか?
- 29. WebFormsでCMSのルーティングを行うにはどうすればよいですか?
- 30. robots.txtに従うにはどうすればいいですか
私はそれを知っていますが、たとえば、@PreUpdateを監査する必要がある場合、このコールバックメソッドが実行されると、JPAはすでにエンティティを更新したように見えます。実際、監査するためには、私のエンティティの最後の値が必要です。 – joaosavio
'@ PreUpdate'は、データベース更新の前にある時点で呼び出されることが保証されています。以前の値を格納するには、 '@ PostLoad'に、同じエンティティの別の属性に現在の値を保存します。 '@ PreUpdate'が実行されるときに"古い "値がそこにあり、"新しい "値はその時点のエンティティの通常の属性になります。 –
@PreUpdateメソッドでは、どうすれば古い値を取得できますか? – joaosavio