2011-01-24 9 views
0

まず、VOの背景について説明します。 VOはフロントエンド層で作成されたモデルオブジェクトで、サービス層から戻ってくる値を渡します。値オブジェクトにSerializableを実装していますか?

以下ダミー・コードの例:

UserResponseTypeFromService user = userAccountService.getUser(...); 
UserVO userVO = ServiceResponseHelper.getUserVOFromServiceResponse(user); 

に続いてフロントエンドコードはむしろuserオブジェクトよりuserVOを使用します。

私の質問はUserVOクラスです。Serializableを実装する必要がありますか?この状況ではスレッドセーフであると常に考えなければなりませんか?

ありがとうございます。

答えて

0

セッション中にVOを保存したい場合や、ワイヤを介して転送する場合は(DTO?)、Serializableを実装する必要があります。

VOは単にデータホルダであり、一般的には変更できません。この原則に従っているならば、スレッドの安全性は与えられています(不変であるため)。それ以外の場合は、セッションに格納する場合はスレッドの安全性を考慮する必要があります。

+0

http://c2.com/cgi/wiki?ValueObjectsShouldBeImmutable – maaartinus

0

あなたの問題のステートメントは、少し抽象的/不明瞭に見えますが、依然として私の理解のためにあなたの質問に対処しようとします。

シリアル化可能については、そのクラスのオブジェクトを永続化したり、ワイヤを介して送信する必要がある場合は、クラスがSerializableを実装していることを確認してください。オブジェクトが要件に合わない場合は、Serializableを実装する必要はありません(もちろん、serialVersionUIDフィールドで何かを行う予定がない限り)。

スレッドセーフについては、ここでの文脈を明確にすることはできますか?

関連する問題