1

ユーザーがエンティティに変更を加えることができるJavaEEとJPAを使用したシステムを開発しています。必要に応じて、変更までさかのぼる必要があります。したがって、すべての変更とユーザーは、更新が行われるたびに記録する必要があります。変更を記録するための最良の方法は何ですか。

たとえば、Investigationというエンティティがあります。名前、カテゴリ、価格、ボリュームなどの属性があります。ユーザーは1つの調査を検索して、あるインスタンスでは名前を変更でき、別のインスタンスでは別のユーザーが価格を変更できます。変更が行われたこれらすべての機会とそれを行ったユーザーは、必要に応じて追跡する必要があります。

このリンクで説明されている方法の1つは、オブジェクトに古い編集済みのラベルを付け、更新された値で新しいオブジェクトを作成することですが、問題は、古いオブジェクトを参照するさまざまなエンティティからの他のオブジェクトがいくつかあることです。

このリンクで説明されている別の方法は、新しいテーブルでバージョン管理フィールドを使用することです。JPAでは、メインエンティティを拡張する新しいエンティティを作成することで実現できます。

これらの方法のうち、ベストプラクティスは何ですか?Java Persistenceでレコード編集履歴を保持するための最適化された他の方法はありますか?

4

2 に答える 2

2

Hibernateを使用してもかまわない場合は、Enversがおもしろいかもしれません。監査を自動的に実行し、オプションで現在のユーザーのようなメタデータを追加します。

監査対象エンティティごとに、以前のバージョンを保持する履歴テーブルを作成します。

于 2012-04-04T08:03:43.530 に答える
2

EclipseLinkは履歴をサポートしています。

http://wiki.eclipse.org/EclipseLink/Examples/JPA/Historyを参照して ください。

于 2012-04-04T14:05:50.987 に答える