私のJavaアプリケーションでは、異なる場所で同じオブジェクトを複数回使用しています。つまり、これらのオブジェクトを比較すると、equals メソッドは true を返します。ここで、1 つのオブジェクトを更新し、すべてのオブジェクトに同じ変更を加えたいと考えています。そのパターンがあるかどうか知っていますか?
私の具体的なユースケースは次のとおりです。JSF、JPA、およびCDIを使用しています。ユーザーは、切り離されたエンティティ EntityA を編集できる Web ページを使用しています。ページはセッションスコープです。EntityA には EntityB への 2 つの参照があります (これも切り離されています)。これらのオブジェクトは同じにすることができます。同じ参照ではありませんが、等しい場合があります。
@Entity
public class EntityA {
@OneToOne()
private EntityB entity1;
@OneToOne();
private EntityB entity2;
}
JSF ビューでは、選択リストからエンティティ 1 とエンティティ 2 を選択できます。これらの EntityB の詳細も表示され、ユーザーは entity1 と entity2 を個別に編集できます。ユーザーがエンティティ 1 とエンティティ 2 に同じ (等しい) エンティティ B を選択したことを除いて、すべて正常に動作します。次に、これらのオブジェクトへの参照のみが更新されます。もちろん、entity1 と entity2 は 2 つの異なる JPA エンティティであり、同じ参照ではありません。しかし、EntityB の切り離されたすべてのインスタンスに変更を配布したいと考えています。私のアプリケーションではこのような状況が何百回も発生するため、どのオブジェクトをどの状況で更新する必要があるかを気にしたくありません。自動的にそれを行う解決策が必要です。1 つのアイデアは、このセッションで使用するすべてのオブジェクトを特別なリストに保持し、リクエストが送信されて処理されるたびに、このマップを反復処理し、すべての等しいオブジェクトを変更することでした。しかし、彼の音は非常に汚いです。おそらく、すべての等しいオブジェクトを同じ参照にするためのJPA関数が組み込まれています。これが可能かどうかはわかりません。これに対する解決策はありますか?ありがとう。