-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Das ist doch kein lazy-loading, oder?
PostPosted: Thu May 15, 2008 2:00 pm 
Newbie

Joined: Thu Jul 05, 2007 9:44 am
Posts: 4
Hallo zusammen

Ich verwende nhibernate 1.2 mit asp.net 2.0, MSSQL2005 und habe grosse Performance-Probleme.

Ein Objekt Question hat mehrere Answers, Responses, Users welche die Question beantwortet haben etc.

Ein GetQuestion dauert bis zu 14 Sekunden.

Im Hibernate-Debug-Log sehe ich, dass dabei tausende von SQL-Queries abgesetzt werden. Erst die Question, dann jeden User der User-Collection, dann für jede Frage jedes dieser User, alle Antworten, etc... einfach alles, der gesamte Tree der an einem Question-Objekt hängt. Die Logausgabe wird schnell mal 100MB gross!

Das ist doch kein Lazy-Loading, oder? Für nur das Question-Objekt erwarte ich ein SQL-Query und nix weiter.. die Collections sollten doch nur bei Bedarf geladen werden.

Mit Version 1.2 sollte Lazy-Loading doch per Default aktiv sein.

Die Einstellung lazy="true" oder lazy="false" beim Collection-Mapping sowie in der class-definition bringt keinerlei Änderung.

Muss man lazy-loading sonst noch irgendwo aktivieren?


Vielen herzlichen Dank für Eure Hilfe, LG Patrick

Nachfolgend ein Ausschnitt aus dem Mapping-File:

Code:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    namespace="....." assembly="business" >
  <class name="Question" table="t_question">
...
<many-to-one name="User" column="user_id" not-null="true" class=".....User" />
    <set name="Answers"  table="t_answer" cascade="all" inverse="true"  order-by="pos asc" >
      <key column="question_id" />
      <one-to-many class="......Answer"  />
    </set>
    <set name="Responses"  table="t_response"  order-by="CreationDate desc" >
      <key column="question_id" />
      <one-to-many class=".....Response" />
    </set>
...
...


Top
 Profile  
 
 Post subject:
PostPosted: Wed May 21, 2008 6:55 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Um das zu bewerten, bräuchte man den query code und die Stelle im Code an der die Daten geladen werden.

Ich würde mit Logausgaben prüfen, wann das genau passiert (bei der Query oder später).

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.