私はエンティティのモデリングに少し矛盾しています。@Transient vs decorator
私たちは約6〜8個のインスタンス変数を持つエンティティを持っています。それらのうちの2つは実際にはデータベースに保持されず、検証やUIでの表示にのみ使用されます。したがって、エンティティを取得するときに、外部ルックアップが設定されます。
今、私の同僚の一人によると、@Transientを使用するよりも、デコレータを使用する方が優れています。ある程度、私は同意する。 DBが表す実際のモデルを明らかにしているからです。
しかし、それはいくつかのケースのための追加の定型(私はMyEntityBOとしてエンティティに名前を付けることができ、ビジネス用などを追加します。しかし、私はUIのためにそれを使用する場合...再び少し混乱される名前になります。
は私の質問は、何がありますシナリオは@Transientをデコレータではなくデコレータを使用する方が良い、またはその逆を使用する方が良い
のために必要な追加のフィールドやメソッドを作成することはできませんオブジェクト。その理由から、UIから直接エンティティを使用すべきではありません。むしろ、ビューに特化したモデルの表現であるビュー固有のモデルを用意する必要があります。そのビューモデルはUIに属します。ビューモデルは元のモデルを合成してカプセル化することができますが、それはデコレータ自体ではありません。それはあなたのアプリケーションが単純なCRUDでない限り、その場合は@Transientと一緒に行くだけです。 – plalx
サンプルコードを表示してデコレータパターンをここに追加する方法を教えてください。 –
@plalx私の場合は、必ずしもUIではありません。オブジェクトは他の検証にも使用されます。このような状況に対処するには、より良い方法が考えられます。 2オブジェクトを作成します。 ObjectUI、ObjectBO UIに必要なものをゲッターだけで手に入れることができます。誤ってUIには表示すべきではなく、メインのエンティティにそこにあるべきもの。 ID /パスワードを隠すことができます。 (ここでも反対の議論は "@IgnoreJson"です:)私は "@Transient"がまだ実行可能な場合を理解しようとしています。あなたのようにアプリケーションがCRUDだけだと言ったら、 "@Transient"を持つ方が理にかなっています –