2017-07-05 6 views
0

Webアプリケーションやダイヤラーアプリケーションからプロキシされた投稿を処理できるサービスを構築しています。ユーザーは、電子メール、SMS、電話、またはアプリを使用して予定を確認またはキャンセルできます。Spring Business Object Modeling

複雑な要因は、アプリと電子メールでは、個別の「確認」または「キャンセル」アクションが得られますが、電話では数字が押され、SMSでは「確認」や「C " (さらに複雑になるのは、異なるアカウントに、キーワードや数字が異なるアクションに解決されるということです)。

ここに私の質問があります。投稿を受け取り、それをすべての関連情報を含み、データベースに保存されているUserInteraction POJOにシリアル化します。残念なことに、このPOJOには、ビジネスロジックに関する限り、ユーザーが行っている個別のアクションの抽象化は含まれていません。

私のようなPOJOのものに追加してください。

@Transient 
private ResponseType responseType; 

またはこの追加の属性が別の引数としてそのライフサイクルのすべてのメソッドを通過する必要がありますか?

私は別のResponseTypeを保つためにした場合

メソッドのシグネチャは次のようになります:

public GenericResponse handleConfirmation(UserInteraction userInteraction, AppointmentInfo apptInfo, ResponseType responseType) 

答えて

1

リファクタリングコストが懸念している場合、POJOで過渡特性を使用して十分に公正なようです。しかし、他の周辺要因やAPI依存性を知らなくても、2つのソリューションの効果を区別することは容易ではありません。

1

IMOベース 'responseType'が 'UserInteraction'抽象化の一部であるかどうか、つまり、私の考えによれば、実際の応答(すなわち、CONFIRM、Cなど)を対応する個別の列挙型に解決してください。 POJO属性を設定し、db内に保持します。

+0

残念ながら、dbレベルでモデル化されておらず、POJOはHibernateによって永続化されるエンティティです。オブジェクトに設定することはできますが、トランジェントデコレータを使用したオブジェクトの属性としてのみ有効です – JonasJSchreiber

関連する問題