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] génère plusieurs requetes sql


Sujet :

NHibernate

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 51
    Points : 49
    Points
    49
    Par défaut [nHibernate] génère plusieurs requetes sql
    Bonjour,
    J'utilise nhibernate pour mon application web ASP.Net
    Lors de l'analyse des performances j'ai constaté qu'une simple requete de recherche sur une table donnée génère plusieurs autres requêtes (ceci étant fait avec sqlProfiler de sql server)
    c'est ou exactement le pb;
    Je me suis dit que pour chaque enregistrement donné, il ya des clés étrangèrent qui font références à d'autres enregistrements dans d'autre tables et donc il fallait retrouver ces données et ainsi de suite pour chaque enregistrement apporté,
    pour arriver enfin à construire la totalité du graphe.
    est ce que j'ai vraiment raison?
    sinon ya t-il un moyen pour éviter ceci??

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 51
    Points : 49
    Points
    49
    Par défaut
    Je ne trouve encore pas de solution,
    pour bien expliquer le problème je presente un exemple:
    j'ai trois tables : compte, agence et banque
    les fichiers de mappage comme suit :
    pour compte:
    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
    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
    	<class name="Compte" table="compte">
    		<id name="Id" type="Int64" unsaved-value="0">
    			<column name="compteID" sql-type="bigint" not-null="true" unique="true" index="PK_COMPTE"/>
    			<generator class="native" />
    		</id>
    		<property name="Rib" type="String">
    			<column name="rib" length="20" sql-type="nvarchar" not-null="true" unique="true" index="AK_COMPTE_AK_COMPTE"/>
    		</property>
    		<many-to-one name="Agence" class="Agence">
    			<column name="agenceID" sql-type="bigint" not-null="true"/>
    		</many-to-one>
    	</class>
    </hibernate-mapping>
    pour agence :
    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
    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
    	<class name="Agence" table="agence">
    		<id name="Id" type="Int64" unsaved-value="0">
    			<column name="agenceID" sql-type="bigint" not-null="true" unique="true" index="AGENCE_PK"/>
    			<generator class= "native" />
    		</id>
    		<property name="Adresse" type="String">
    			<column name="adresse" length="50" sql-type="nvarchar" not-null="true"/>
    		</property>
    		<many-to-one name="Banque" class="Banque">
    			<column name="banqueID" sql-type="bigint" not-null="true" index="IDX_BANQUE_AGENCE_PK"/>
    		</many-to-one>
    	</class>
    </hibernate-mapping>
    et pour banque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
    	<class name="Banque" table="banque">
    		<id name="Id" type="Int64" unsaved-value="0">
    			<column name="banqueID" sql-type="bigint" not-null="true" unique="true" index="BANQUE_PK"/>
    			<generator class="native" />
    		</id>
    		<property name="Libelle" type="String">
    			<column name="libelle" length="30" sql-type="nvarchar" not-null="true"/>
    		</property>
    	</class>
    </hibernate-mapping>
    Donc si par exemple j'essaye de rechercher mes comptes, pour chaque compte nhibernate génère des requêtes pour trouver l'agence qui correspond, et pour chaque agence, cherche la banque ...
    Le cas n'est pas aussi simple que je l'ai présenté mais vous pouvez imaginer de schéma beaucoup plus compliqués là ou on descend en profondeur jusqu'au 4 ou 5 niveau,...

Discussions similaires

  1. Assembler plusieurs requete sql
    Par pobrouwers dans le forum Langage SQL
    Réponses: 1
    Dernier message: 06/03/2008, 21h55
  2. Réponses: 6
    Dernier message: 19/12/2007, 17h40
  3. [SQL] Executer plusieurs requete sql
    Par fadex dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/02/2007, 15h08
  4. Réponses: 2
    Dernier message: 23/11/2006, 14h02
  5. Réponses: 2
    Dernier message: 15/11/2006, 16h59

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