熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Hibernate的十大罪狀

2013-11-23 20:51:05  來源: Java開源技術 

  Hibernate確實功能強悍但在易用性性能上存在缺陷如果團隊中沒有一個精通Hibernate的高手不適合使用Hibernate

   復雜的實體狀態

  各種實體狀態的設計是種種復雜性問題的根源在持久化狀態下不需要save就自動同步到數據庫既無必要又容易造成煩惱

   Lazy Load 與 Eager Load

  Lazy Load的概念聽起來不錯用起來就不那麼妙了也直接導致產生了Open Session In View這種妥協方案此外在domain類中定義的FetchType只針對get/load/loadAll有效對Query是無效的需要再次定義

   Open Session In View

  Lazy Load引發的一個有較多副作用的解決方案

   級聯

  級聯是一個很好很OO的概念但往往增加了復雜度

   批量更新與緩存不一致

  Hibernate引入了一級緩存和二級緩存提供了性能的同時帶來了緩存一致性的問題批量更新或者其他系統對數據庫的更新容易造成緩存不一致

   配置繁瑣

  Hibernate最初只能使用xml進行配置後來終於引入了Annotation和CoC(約定優於配置)來簡化配置但這種變革並不徹底Hibernate默認把userName映射userName但實際開發中把userName映射為user_name的情況更多些

   HQL

  HQL是一個類SQL對象查詢語言但正是因為HQL與SQL的相似性往往容易造成混淆同時HQL難以調試本質創建了一種語言增加學習成本

   太多的查詢方案

  HQLQBCSQL就不能統一點簡潔點?

   N+次查詢

   性能問題

  總之Hibernate立足於作一個完整的自動化的能夠適應各種環境的ORM因此帶來了%的復雜性但我們實際需要的只是一個簡單的能夠以%時間解決%問題的框架具有對象關系映射能自動生成SQL能夠讓新手盡快工作就足夠了也許ActiveRecord是一個選擇


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29200.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.