EmailAlert Bean を DTO として使用して、Hibernate を介してデータを取得します。したがって、私のクラスには、DB にあるフィールドのみが含まれます。しかし、場合によっては、中間データを保持するために、追加のフィールドを EmailAlert に含める必要があります。たとえば、「キャプション」フィールド - Java 側で計算され、ユーザーのロケール、時間などに依存します。
したがって、この問題を解決するためのいくつかのバリエーションがあります。
追加のプロパティ (例: キャプション) を EmailAlert Bean に追加しますが、DB テーブルのどのフィールドにもマップしません。欠点: この場合、hashCode() と equals() で「キャプション」プロパティを使用しないでください。
- 本当に問題はありません-フィールドは中間データのみを保持します
- キャッシュと Hibernate 自体の問題の原因ではないかどうかはわかりません。
クラスのプロパティを持つのは非常に見苦しいと思いますが、 equals() および hashCode() メソッドで使用しないでください。
将来、誰かがこのロジックを混乱させる可能性があります。
"caption" プロパティを追加して、EmailAlert を EmailAlertExt として拡張します。そして、引数として EmailAlert を取るコンストラクター。
しかし、この場合、EmailAlert を EmailAlertExt Bean として DB に再度格納する場合に備えて、水中の石はわかりません。"caption" プロパティを追加して EmailAlert を EmailAlertExt2 として拡張し、元のオブジェクトへの参照を取得します。この場合、EmailAlertExt2 は元の EmailAlert として動作しますが、追加のプロパティが必要です。EmailAlert を保存する場合、元のオブジェクトへの参照を返す EmailAlertExt2 の getOriginalValue() を呼び出すことができます。欠点:コーディングが多すぎる:)
みんな、これらのソリューションのどれが優れていますか? 誰かが他の提案を持っているかもしれませんか?