摘要: 问题:
1.Hibernate碰到延迟加载的属性访问时如果session被关闭则抛出LazyInitializationException
2.Hibernate中的one-to-many等关联关系在序列化时如果没有控制,则将整个数据库都有可能被全部序列化
3.过多的使用DTO/ValueObject解决这个问题.
解决办法:
对Entity对象生成一个动态代理,拦截getXXXX()方法,如果访问的是延迟加载的属性,则return null,而不抛出LazyInitializationException,递归生成属性的代理,只要碰到未延迟加载的属性,而序列化会自动停止.避免将整个Entity序列化传播,导致可能序列化整个数据库的问题.
阅读全文