系統使用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;
}
這就強制用戶接收這些日誌信息了. 很多時候, 我們使用該方法來驗證數據是否存在, 結果會看到一大串的異常信息, 很不舒服.
從這兩點看來, 其設計的思想還是沒有從用戶的角度來考慮呀.
Hibernate3.1 的一個Event機制問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
IoC聯想到規則引擎
loveyly
2020-02-21 18:47:03
Tomcat的Cluster功能複製session時會複製保存在其中的對象麼?
loveyly
2020-06-28 17:53:24
學習使用Spring應該能具有過濾的能力.
loveyly
2020-06-28 17:53:23
Portal開源實現-Liferay的Portlet Session處理(2)
loveyly
2020-06-28 17:53:22
Portal開源實現-Liferay的Portlet Session處理(3)
loveyly
2020-02-21 18:47:05
記住調用super類的構造方法!
loveyly
2020-02-21 18:47:03
Portal開源實現-Liferay的Portlet Session處理(1)
loveyly
2020-02-21 18:47:03
天花板漏水了---印度一感
loveyly
2020-06-28 17:53:24
strcmp遇到的問題
sunnyboychina
2020-03-09 06:37:55
奇怪的double型變量的比較
sunnyboychina
2020-03-09 06:37:55
DWR 說 Struts2 用了 DWR, 呵呵
loveyly
2020-02-21 18:47:04
如果公務員跟普通公民沒有差別.
loveyly
2020-02-21 18:47:04
關於以後 WEB 開發的一個想法
loveyly
2020-02-21 18:47:03
Tomcat的Cluster功能複製session時會複製保存在其中的對象麼?
loveyly
2020-06-28 17:53:24