看板 java 關於我們 聯絡資訊
※ 引述《lookjohn (《經濟狀況》赤貧)》之銘言: : 各位大大好,小弟,用Hibernate 進行開發已經有一段時間了, : 不管大小專案的進行,hibernate 已經是我開發上不可或缺的開發元件之一 : 但是有個疑問一直存在小弟身上多年,想請各位大大幫忙釐清一下小弟的觀念 [43] : 這兩隻 皆指到 TableA (不管事用annotion或是ORM).. : === : 想請教: : 使用語法 : "From TableA where 1=1" ; query.setMaxResults(1000); 直接 "from BeanA" 或 "from BeanASimple" 就行了。 : 在同樣10000筆的查詢之中,我使用的BeanASimple 的情況 是否優於BeanA? : 是否下列幾個條件皆有比較好: : 1.查詢效率 : 2.記憶體的佔用率 : 3.多人同時查詢的情況 : 這是我個人的認知,就觀念上不知是否是正確的或是有相對的謬論存在, : 請各位大大不吝指教..:) 單是你上面的幾項而言,如我在上一篇的 comment 所說,你可以 單純把問題考慮為一般 SQL statement, select 的 field 的多少 對 performance 的影響。 一般而言,select 比較少的 field, 用的 memory 較少,傳送的資料 也較少,所以 1,2,3 都應該是 BeanASimple 的情況較好,如果撇除因 資料量多少而引起的分別,則 1,3 應該都一樣。 But! 簡單而言是這樣而已,實際有太多可能影響的東西。比如說,很多地方都 在用 select 多 field 的 SQL, 很有可能 DB 已經做了相關的 cache (比如execution plan 的 cache),select 多 field 也可能變得反而較 快。 除此以外,更值得關注的是 BeanA & BeanASimple 的用處。究竟哪一個 才是實際的 model? 比如,建立 entity 的關係的時候,是用哪一個?這 可能影響到 Hibernate first level cache,也會對效率有影響。 更重要的是,對於設計而言的問題 (雖然有點離題),單純因為大部 份時間只用到其中幾個 field 而弄一個 entity 出來,看來並不是很 合理的做法。要知道 Hibernate (或其他 ORM framework) 是讓你把 你的 model map 到 relational database, 意即,目標是讓你能有合 理的 model design. 可是你的出發點卻還是以 DB 出發,把 entity 當成單純的 value object (所以才會出現“因為只要到幾個 field 所以弄一個 Simple entity 出來”)。通常這樣用 Hibernate 的少 有見到結果理想的,倒不如用 MyBatis 更適合。 Alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.19.42.175
lookjohn:謝謝Alien 大哥,小弟受教了,之所以這麼問,是因為 03/31 11:34
lookjohn:在大部份的function implement之中用不到那麼多Field 03/31 11:36