IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Synchro d'objets issus d'une base de donnée


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut Synchro d'objets issus d'une base de donnée
    Bonsoir,

    Pour rendre mon problème conpréhensible, je vais prendre un exemple concret. Soit un site d'annonces immobilière avec des users enregistrées (les particuliers vendeurs).

    Soit C(n) N clients connectés qui consultent le site. Supposons le scénario suivant :

    C(1) liste les annonces de Paris. Il obtient une liste d'annonce.
    C(2), en réalité un vendeur, se logue sur ce site. Il modifie son annonce, qui est une maison à 70 000€. Il la passe à 100 000€ et enregistre (l'objet Annonce est mis à jour en base).
    C(1) voit dans sa liste justement la fameuse maison à 70 000€. Il clique sur le lien pour le détail de l'annonce. Plusieurs possibilité selon la réalisation de l'application :

    1- dans le détail de la page il voit 70 000€. Typiquement quand il a fait sa recherche l'intégralité des annonces retournées ont été stockées dans la session utilisateur. La page de détail affiche donc l'objet issu de la session utilisateur. (je trouve ça pas top)
    2- dans le détail de la page il voit 100 000€. Typiquement l'objet est actualisé à chaque appel. (je trouve ça pas top non plus)

    Ma question est donc la suivante : existe-t-il un framework, un coding pattern, une autre solution technique... pour synchroniser entre eux différents objets qui sont en réalité le même ? Ou alors, idéalement à mon avis, avoir une seule instance Java pour un seul objet "equivalent" en base de données.

    Comment y arriver ? Hibernate permet-il ce genre de truc ? Faut-il créer une classe qui conserve toutes les instances uniques ?...

    Merci pour vos éventuels éclairages !

  2. #2
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Bonjour titbit,

    Je dirais qu'il n'y a pas de solution unique. Elle dépend complétement de ton contexte.

    - La maison en question peut être acheter via un click (c'est beau de réver ).
    Il faut alors que tu modifies le modèle de ta base pour prendre en compte l'historique des prix. Le prix sera donc fonction de la date précise à laquelle le client a récupérer le détail de la maison.

    - Le prix de la maison n'est que pour de la consultation.
    Dans ce cas, il faudra se baser sur le prix final et donc refaire une requete pour connaitre le vrai prix avant de la mettre dans le panier final de l'utilisateur. Ce prix sera conservé pour pouvoir historiser le panier de l'utilisateur.

    Bref autant de choix possible que de contexte fonctionnel.

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut
    Je n'avais pas trop pensé au "contexte fonctionnel". Pour moi, ca serait plus ta solution 2.

    En fait ce qui me dérangeait le plus c'est de faire de nombreux appels à la BDD. Mais bon, ca sert aussi à ça un SGBD... non ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Par défaut
    @ titbit :

    deux choses me paraissent importantes dans ton exemple;
    1) le listing des Annonces (donc en lecture seule) ne devrait pas être stockée dans une 'Session', mais bien être de type 'Request', voir même mieu 'Page', cela va permettre qu'a chaque rafraichissement de la page, les données seront déjà plus a jour.

    2) sur la page où il a la liste des annonces, et plus particulièrement le lien qui permettrait de signaler que cette annonce m'intéresse, une vérification devrait être active, pour vérifier si au moment ou il clique, si l'annonce n'a pas changé entre temps, ce qui va renforcer la justesse des valeurs.

    de toute façon je préconise un Pool de connections pour éviter la gestion lourd des connections/déconnections.

    Si tu utilises les EJB3, je dirais que la lecture serait une EJB de type Stateless

    en espérant t'avoir aidé.

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Perso, pour un projet, j'ai fait ça pour un caddie (ou un panier, c'est comme on veut).

    Un EJB @Entity (c'est parce qu'on sauve le caddie en base de données, mais ça peut très bien être un @Stateless) représente le caddie.
    Une page JSP affiche le contenu du caddie avec un bouton "acheter". Le caddie est alors mis en session.
    Lorsque l'utilisateur clique sur acheter, ça lance la servlet associée à l'action, et cette servlet récupère le caddie de l'ejb, et le caddie de la session, et les compare. S'ils sont différents, c'est que quelqu'un a modifié quelque chose (par exemple l'utilisateur est loggué 2x et a ajouté quelque chose à son caddie), et donc l'achat est annulé (la liste est réaffichée, et il peut recliquer sur acheter).

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/04/2014, 23h29
  2. Mapping des objets C++ dans une base de données
    Par ScratchBag dans le forum C++
    Réponses: 18
    Dernier message: 20/09/2008, 12h15
  3. Sérialiser un objet directement dans une base de données
    Par Kehel dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 22/08/2008, 09h45
  4. PB downloading des Objets blob d'une base Mysql
    Par Fathallah dans le forum SQL Procédural
    Réponses: 22
    Dernier message: 14/09/2006, 09h53
  5. Recuperation des objet ole dans une base SQL
    Par TOPGUN89 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/11/2005, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo