摘要: 問題:
1.Hibernate碰到延遲加載的屬性訪問時如果session被關(guān)閉則拋出LazyInitializationException
2.Hibernate中的one-to-many等關(guān)聯(lián)關(guān)系在序列化時如果沒有控制,則將整個數(shù)據(jù)庫都有可能被全部序列化
3.過多的使用DTO/ValueObject解決這個問題.
解決辦法:
對Entity對象生成一個動態(tài)代理,攔截getXXXX()方法,如果訪問的是延遲加載的屬性,則return null,而不拋出LazyInitializationException,遞歸生成屬性的代理,只要碰到未延遲加載的屬性,而序列化會自動停止.避免將整個Entity序列化傳播,導(dǎo)致可能序列化整個數(shù)據(jù)庫的問題.
閱讀全文