1

私は春+ JPAプロジェクトを持っています。

イベント エントリを作成し、それらをテーブルに保存したいと思います。たとえば、次のようになります。

a) ID 4 のエンティティ "User" が変更されました: "userName" という名前のプロパティで oldValue: "john" newValue: "johnnie"

b)新しい顧客の電子メールが受信されたため、この電子メールの新しいチケットを作成しました。この電子メールの担当者は「Goku」という名前のユーザーです

私の質問は:

そのようなメカニズムを作成するためのベストプラクティスは何ですか? 現在、十分ではない2つのアイデアがあります。

1)履歴イベントを作成したいコードのすべての場所に次のコードを挿入できます。

historyManager.createEvent(String event string,String newValue, String oldValue, Date date);

このソリューションは機能しますが、非常に見苦しく、一般的ではありません。

2) Hibernate Envers を使用します。このライブラリは実際にプロジェクト内のすべてのエンティティの変更を単純な注釈でログに記録します: "@Audited" 問題は、このソリューションがパフォーマンスに影響を与え、正直言ってあまり魅力的ではないことです。

4

1 に答える 1

0

私はEnversのアプローチを採用します。パフォーマンスが本当に問題になる場合は、さまざまな方法で解決できます。たとえば、特別な「エンジン」(MySQL の場合) を使用してデータをパーティション分割し、別のスキーマ/カタログに保存します...そして、すべてを実行するオプションと比較して、ほとんど「無料」で取得できます。自分で。

于 2013-09-10T11:49:22.963 に答える