Hibernate3.1 的一個Event機制問題

系統使用Hibernate, 感覺還可以. 從其強大的功能中獲利不少. 於是hibernate 3.1出來後, 就升級到了這個版本. 但是新版本的一個Event機制, 卻透露出其設計的一個大毛病.

在hibernate 3.1中, 所有的操作都是由Event來驅動的. 於是就存在了各種各樣的EventListener. 按照設計原理, 既然是EventListener, 而且可配置, 那麼就可以去掉默認的實現, 不配置任何的Listener, 還是可以運行的. 但是Hibernate沒有做到這點. 例如其DefaultLoadEventListener就實現了其特別的邏輯. 如果沒有該Listener, Hibernate是無法load數據的.

這基本違背了最簡單的設計原則. 我希望是我還沒有完全理解hibernate, 可能有其他可配置的選擇.

還有一個問題, 也是比較令人難受的. 那就是在默認的Listener的實現中記錄日誌. 比如DefaultLoadEventListener 的onLoad方法, 如果沒有數據存在就忘日誌裏寫了如下的信息.

catch(HibernateException e) {
   log.info("Error performing load command", e);
   throw e;
  }

這就強制用戶接收這些日誌信息了. 很多時候, 我們使用該方法來驗證數據是否存在, 結果會看到一大串的異常信息, 很不舒服.

從這兩點看來, 其設計的思想還是沒有從用戶的角度來考慮呀.
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章