-2

Ticketヘルプデスク チケットを表すエンティティ/JSF マネージド Beanがあります。

statusプロパティがあります。ステータスが に設定されている場合、プロパティclosedの値を現在のシステム時刻に変更したいと考えています。closingDateしかし、チケットが閉じられるたびに時間を記録する必要があるため、コードは Bean に含める必要があると思います。

それを管理する適切な方法は何ですか?いくつかのアイデアがあります。

  1. setter をprivate にして、 setter が呼び出されcreationTimeたときにその値を変更します 。status迅速かつ迅速ですが、セッターに 2 つの属性を変更させます。また、JPAフィールドアクセスを使用することを余儀なくされ(すでに使用しているので問題はありませんが、それでも制限があります)、Beanがシリアル化されたときに何が起こるかわかりません。
  2. JavaBeansstatusで説明されているようにプロパティをバインドされたプロパティにし、クラスPropertyChangeListenerをそれ自体にします。非常に形式的ですが、私の例えでは少し複雑すぎます。
  3. close()両方のプロパティのセッターをプライベートにし、両方のアクションを実行する非 Bean メソッドを追加し ます。私ならこの方法をとりますが、JSF の操作が複雑になる可能性があります。
  4. 何もしない。Bean をできる限り馬鹿げたままにして、ロジックをコントローラーに移動します。誰も両方の属性を更新するのを忘れないことを願っています。

私は 1) または 3) を支持しますが、より良いアプローチがあるかどうかを知りたいです。

4

1 に答える 1

0

あなたが作るのと同じように、多くの異なるアプローチに対して議論をすることができるので、誰かがそれを管理する適切な方法を教えてくれるかどうかはわかりません. 1) と 3) の組み合わせとしてリストに追加するには、たとえば、次のようにします。

  • クローズに設定されている場合はstatus更新のセッターを持ち、両方のセッターをパブリックのままにします。JPAの観点からこれの欠点を認識していないため、両方の利点があります。creationTimestatus

ただし、 Entity/JSF Managed Beanを使用することはお勧めしません。Entity Bean と JSF Managed Bean の 2 つを用意することをお勧めします。このようにして、エンティティ Bean を可能な限りダムに保つことができますが、JSF マネージド Bean には、またはエンティティ Bean への一連のダム呼び出しで構成されるスマートなメソッドがあります。また、 のようなこともできます。開発が容易で、保守が容易で、意思決定が容易です。これが役立つことを願っています。close()reopen()persist()@PreDestroy

于 2012-11-01T20:48:20.840 に答える