On Wed, 13 Feb 2013 10:08:31 +0100 Eric Chatellier <chatellier@codelutin.com> wrote:
Donc la liste est récupérée du service en une seule opération et cela devrait suffire à l'afficher. Cependant, dans le provider la methode getModel() est surchargée comme cela: public GenericLoadableDetachableModel<M> model(M object) { // return new Model<M>(object); return new GenericLoadableDetachableModel<M>(object); }
qui, lorsqu'elle est appelée, va récupérer en base l'objet qui a le même id que l'objet actuel ??? Pourquoi ce genre de fonctionnement est-il en place ? Pourquoi n'utilise-t-on pas simplement la liste que l'on a chargé du service ?
Je pense avoir un début de piste d'explication dans le code on trouve ça: /** Data list */ // TODO penser à remettre "transient" à la liste private List<M> list; Donc en fait la liste ne devrait plus exister entre deux appels (si elle est vraiment transient). Mais est-ce que cela fonctionne vraiment si on remet le transient ? Personnellement, je ne pense pas car, la méthode iterator utilise directement la liste, alors qu'elle devrait refaire appel au service pour récupérer ses informations. Codé convenablement cet objet demanderait énormément de travail (réécriture de nouvelles méthodes sur les services, réécriture de cette classe, prise en compte du detach, modification du code où est utilisé cet objet; en gros remise en cause profonde de beaucoup de chose actuellement utilisée) pour un gain qui ne se verrait que dans un environnement clusterisé avec réplication. Or la encore, même si on met l'application en cluster, la réplication n'est pas obligatoire car si un serveur tombe, au pire, l'utilisateur doit se réauthentifier et reprendre son travail. Donc lors d'une mise en cluster, la réplication n'est pour moi pas nécessaire voir contre productive par rapport à l'implication sur charge réseau par rapport au gain fonctionnel pour l'utilisateur. Bien sur ce que je dis (si j'ai pas tout faux ;)) ne vaut que pour le court terme. Car vu que la liste des éléments d'un tableau est chargé en une seule fois, plus la base contient d'élément, plus la liste chargé est longue et plus on pousse d'information dans la session :(. Il faudrait au moins prendre en compte la pagination (mais cela veut dire des services capable de récupérer les éléments que l'on souhaite, dans l'ordre que l'on souhaite en prenant en compte les droits de l'utilisateur) -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com