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

NHibernate Discussion :

[NHibernate] Problème temps de chargement


Sujet :

NHibernate

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [NHibernate] Problème temps de chargement
    Bonjour,

    J'essaye actuellement de charger toutes les données d'un table afin de peupler des listes déroulante. Mais, avec une table qui contient environ 800 entrée, les performances ne sont pas acceptable (entre 20 et 30s par référentiel).

    Voici une partie du code :

    CommercialName.hbm.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0"?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                       namespace="OPS_OREO.OREO.OPOP.DataModel"
                       assembly="OPS_OREO">
      <class name="CommercialName" table="OPOP_CommercialName" lazy="false">
        <id name="id">
          <column name="Id" />
        </id>
        <bag name="TranslationsList" table="OPOP_CommercialNameTranslation" lazy="false">
          <key column="CommercialNameId" />
          <one-to-many class="CommercialNameTranslation" />
        </bag>
      </class>
    </hibernate-mapping>
    CommercialNameTranslation.hbm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?xml version="1.0"?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                       namespace="OPS_OREO.OREO.OPOP.DataModel"
                       assembly="OPS_OREO">
      <class name="CommercialNameTranslation" table="OPOP_CommercialNameTranslation" lazy="false">
        <composite-id>
          <key-property name="commercialNameId">
            <column name="CommercialNameId" sql-type="integer" not-null="true"/>
          </key-property>
          <key-property name="languageId">
            <column name="languageId" sql-type="nvarchar" not-null="true"/>
          </key-property>
        </composite-id>
        <property name="label" column="name" />
      </class>
    </hibernate-mapping>
    chaque CommercialName possède plusieurs traductions. Lorsque que je fais un RetrieveAll sur cette table, c'est extrêmement long.

    Quelqu'un aurait-il une idée ?

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Ce qui est logique; en rapprochant le graph (qui donc 800 objets * nombre de traductions); ce qui fait la matérialisation de plusieurs miliers d'objets en mémoire, dans une session, donc avec le track changing.

    Si il s'agit juste de lier une combo :
    - une session stateless sera suffisante
    - il vaut mieux créer un mapping spécifique basé sur SELECT sur une vue en read only

    D'une façon générale, c'est un contre emploi de matérialiser des objets juste pour initialiser une combo box.

    Dans ces cas, le datareader de la connection Nhibernate ou la méthode ci-dessus te donnrait plus de satisfaction.

    Pour comprendre la logique, si tu avais besoin de deux champs dans une table, tu ferais select champ1, champ2 from matable, pas un select sur l'ensemble des données avec le produit cartésien des relations.

    En revanche, pour 800 objets et vu le graph, 20s me paraissent énormes, as-tu le code ?

    PS : il se peut que le thread soit subitement envahi de posts qui te diront que l'orm c mal et que le SQL pur c'est mieux, c pas très grave.

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse, J'ai du coup fractionner le chargement de l'objet en plusieurs étapes afin qu'il ne me charge pas tout le referentiel et de filtrer ce dont j'ai besoin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Javascript] temps de chargement long
    Par rdams dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/02/2006, 16h56
  2. Temps de chargement des applications .NET
    Par kamal101 dans le forum Visual Studio
    Réponses: 3
    Dernier message: 17/11/2005, 09h11
  3. temps de chargement de la page en bas...
    Par kevinf dans le forum Général JavaScript
    Réponses: 33
    Dernier message: 19/10/2005, 15h15
  4. Réponses: 3
    Dernier message: 08/12/2004, 21h11
  5. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 15h21

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