使用動態代理解決Hibernate序列化,避免延遲加載問題.
摘要: 問題:
1.Hibernate碰到延遲加載的屬性訪問時如果session被關閉則拋出LazyInitializationException
2.Hibernate中的one-to-many等關聯關系在序列化時如果沒有控制,則將整個數據庫都有可能被全部序列化
3.過多的使用DTO/ValueObject解決這個問題.
解決辦法:
對Entity對象生成一個動態代理,攔截getXXXX()方法,如果訪問的是延遲加載的屬性,則return null,而不拋出LazyInitializationException,遞歸生成屬性的代理,只要碰到未延遲加載的屬性,而序列化會自動停止.避免將整個Entity序列化傳播,導致可能序列化整個數據庫的問題.
閱讀全文
1.Hibernate碰到延遲加載的屬性訪問時如果session被關閉則拋出LazyInitializationException
2.Hibernate中的one-to-many等關聯關系在序列化時如果沒有控制,則將整個數據庫都有可能被全部序列化
3.過多的使用DTO/ValueObject解決這個問題.
解決辦法:
對Entity對象生成一個動態代理,攔截getXXXX()方法,如果訪問的是延遲加載的屬性,則return null,而不拋出LazyInitializationException,遞歸生成屬性的代理,只要碰到未延遲加載的屬性,而序列化會自動停止.避免將整個Entity序列化傳播,導致可能序列化整個數據庫的問題.
閱讀全文
posted @ 2008-10-31 00:33 badqiu 閱讀(3181) | 評論 (3) 編輯