Question

Si User est une entité, et je besoin de stocker User dans Session, il sera détaché sur demande suivante.

il AFAIK sont seulement deux méthodes pour gérer ces objets détachés

  1. EntityMerge(session.user) - mise à jour DB avec l'objet de session (dangereux)
  2. session.userID - entityLoadByPK() à nouveau sur demande suivante (charge plus)

Sont-ils les seuls 2 solutions de contournement? Toute autre façon?

Selon Techniques avancées avec ColdFusion 9 ORM intégration Faites glisser le pont avec la méthode Concurrency # 1 jetteront erreur si l'entité a été modifiée sur la fusion, mais comment cela est utile? attraper la méthode d'exception et de l'utilisation # 2?

Quand utiliser EntityReload()? Je pensais que cela fonctionne de la même manière que EntityMerge(entity) mais il ne fonctionne pas.

Merci!

Était-ce utile?

La solution

J'ai tendance à stocker que l'ID de l'utilisateur qui est connecté à la session.

J'ai une méthode de façade UserService.getCurrentUser () qui retourne cet utilisateur si je en ai besoin.

De cette façon, l'utilisateur est toujours en cours, et jamais détaché.

Autres conseils

J'utiliser généralement un objet proxy léger (contenant les propriétés de niveau supérieur uniquement) en session et charger uniquement l'entité complète au besoin exactement de la même cas d'utilisation que vous avez décrit. Ne pas utiliser la méthode # 1 à moins que vous voulez vraiment vous brûler (expérience parler là-bas).

sessions Hibernate sont paresseux chargés, et ne persistent pas. Ainsi, alors que vous avez l'objet CF en mémoire, ils pointant vers une session Hibernate qui est hors de portée, faute d'une meilleure terminologie. Pour revenir à la portée, vous devez essentiellement réveiller vos demandes ultérieures, en utilisant quelque chose comme EntitySave () ou EntityLoadByExample ()

Je suis d'accord que l'emballage dans un service vous permet non seulement d'éviter certaines de ces questions, mais est globalement meilleure architecturalement que de toucher l'entité directement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top