2012-03-31 7 views
1

AppEngine for Java(オブジェクト化を介して)のエンティティの基本監査フィールドを効率的に管理するための提案を探しています。 @PrePersist属性は、さまざまな日付フィールド(dateCreated、dateModified、dateDeleted)の良いオプションのように見えますが、エンティティも作成、変更、削除されたユーザーのIDを格納することも考えています。これはデータアクセス層に残すのが最善でしょうか?AppEngineエンティティの監査フィールド

答えて

1

あなたが言及した日付以上のレコードを格納する必要がある場合は、おそらく監査オブジェクトを作成し、@Embedを使用してそれを監査対象のオブジェクトの内部に格納します。次に、このオブジェクトを更新するために@PrePersistを使用します。これにより、オブジェクト間で一貫した監査フレームワークが得られます。

+0

私が\ @ PrePersistを使用している場合、どのようにしてユーザーIDを保持できますか?私たちがアクセスする必要がある唯一の方法は、HttpSessionから取得するユーザー取得サービスです。この情報を得るには、ドメインエンティティに何らかのサービスを注入するのが一般的なのですか? –

+0

はい。セッションから取得するか、またはクッキーから読み取ることができます。それはあなたのアプリケーションにまったく依存します。一般的に、アプリケーションのDAOレイヤにはdoUpdate(User、Entity)のようなメソッドがあります。 –

+0

私たちはDAOレイヤを持っていますが、doUpdateメソッドごとにユーザーを渡す必要はないとは思いません。 DAO層は本質的にこれを行う方法を知っているべきではありませんか? –

0

IMHO @PrePersistはこれを実行するのに最適な場所です。

objectify's polymorphismを使用して、すべての監査フィールドを含む基本クラスを作成して保存することもできます。監査を必要とするすべてのクラスよりも、この基本クラスを拡張するだけです。

関連する問題