質問

もしも User エンティティであり、保存する必要があります UserSession, 、次のリクエストで分離されます。

afaikこれらの分離されたオブジェクトを処理する方法は2つしかありません

  1. EntityMerge(session.user) - セッションのオブジェクトでDBを更新する(安全でない)
  2. session.userID - entityLoadByPK() 再び次のリクエスト(その他の負荷)

これらは唯一の2つの回避策ですか?他の方法はありますか?

によると ColdFusion 9 ORM Integration Slide Deckを使用した高度なテクニック メソッド#1との並行性は、エンティティがマージで変更された場合、スローエラーを投げますが、これはどのように役立ちますか?例外をキャッチし、方法#2を使用しますか?

いつ使用するか EntityReload()?同じように機能すると思いました EntityMerge(entity) しかし、そうではありません。

ありがとう!

役に立ちましたか?

解決

セッションでログインしているユーザーのIDのみを保存する傾向があります。

次に、userservice.getCurrentuser()ファサードメソッドを持ち、必要に応じてそのユーザーを返します。

そうすれば、ユーザーは常に最新であり、決して切り離されることはありません。

他のヒント

私は通常、セッションで軽量プロキシオブジェクト(トップレベルのプロパティのみを含む)を使用し、説明したのとまったく同じユースケースで必要に応じて完全なエンティティのみをロードします。あなたが本当に自分自身を燃やしたいのでない限り、方法#1を使用しないでください(そこで話している経験があります)。

冬眠セッションは怠zyなロードされており、持続しません。したがって、CFオブジェクトをメモリに持っている間、彼らは、より良い用語がないため、範囲外の冬眠セッションを指しています。スコープに戻るには、基本的に、EntitySave()やEntityLoadByExample()のようなものを使用して、後続のリクエストでそれを起こす必要があります

私は、サービスでのラッピングは、これらの問題のいくつかを回避するのに役立つだけでなく、エンティティに直接触れるよりも全体的に建築的に優れていることに同意します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top