1
我想做的事情在我的webapplication.I一個渴望獲取我的映射文件中有如下冬眠不是做預先抓取(使用取=「加入」懶=「假」)
<many-to-one name="user" class="com.xyz.beans.User" lazy="false" fetch="join">
<column name="startedBy" />
</many-to-one>
<many-to-one name="participantByParticipant1" class="com.xyz.beans.Participant" lazy="false" fetch="join" cascade="all" >
<column name="participant1" />
</many-to-one>
<many-to-one name="participantByParticipant2" class="com.xyz.beans.Participant" lazy="false" fetch="join" cascade="all">
<column name="participant2" />
</many-to-one>
我有查詢如下
Query query = session.createQuery("from Post as p order by challenge.createdOn desc");
query.setFirstResult(0);
query.setMaxResults(10);
Participand表具有有一些映射到其他tables.And其獲取策略是相同 這需要大約2+秒來執行上述查詢,我可以看到以下通過生成的查詢冬眠 1選擇查詢獲取10帖子 20選擇查詢參與者tabel(因爲每個職位有2個參與者)
1)爲什麼這樣?爲什麼它沒有進行單一連接?
2)如何優化這個它的服用過多time.The表只爲10個記錄,現在
「*我想在我的web應用程序中熱切地獲取所有內容。*」。爲什麼你需要熱切地取得一切?此外,XML映射沒有什麼問題,儘管現在趨勢是使用註釋而不是XML映射。它簡化了DAO。 – Lion
因爲我需要在UI上顯示它。上面的查詢需要大約2秒,那太多了。我想一次性在一個selct語句中查找所有相關表格 – user93796
如果您使用名爲['org.springframework.orm.hibernateX.support.OpenSessionInViewFilter'](http)的過濾器,您可以使用'FetchType.LAZY' ://static.springsource.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/support/OpenSessionInViewFilter.html)。它允許在Web視圖中延遲加載(如你所說,UI)。 – Lion