2011-06-08 68 views
0

對於延遲加載,hibernate會生成代理。對於lazy = true(這也是默認值),我希望我的數據訪問層和業務層使用此功能。但是,一旦加載的數據發送到表示層,我想要「空指針異常」,而不是「LazyInitializationException無法初始化代理 - 沒有會話」,如果某些屬性訪問未初始化的DTO/BO。 從概念上講,我不想在我的單個映射中定義lazy = false。這是我想要的一些解決方案還是任何其他好的替代方法? 謝謝。定義延遲加載(休眠)的範圍

回答

0

如果您通過開發和測試過程追查LazyInitializationExceptions並找出正確的圖形水合,而不是試圖用這種方案掩蓋它,您將創建一個更穩定的應用程序。

這就是說,既然你想在低層保持正常的行爲,你最好的辦法就是在業務層捕獲任何LazyInitializationExceptions,並將NullPointerException引發到表示層。

一個選項可能是查看servlet過濾器並將它們掛接到處理鏈的相關級別。