看了以前的帖子
http://www.iteye.com/post/282606
也结合自己目前遇到的问题
我认为Hibernate Lazy loading(主要指使用OpenSessionInView)机制是不能用在稍微复杂的企业系统中的
它看似方便,走了捷径,其实破坏了固有的分层结构,把本该属于持久层的机制四处传播,同时也带来了很多风险,会影响其他的功能的使用
主要体现在
1. Web remoting
2. Cluster环境session对象序列化的问题(现在越来越多的框架会根据一顶的策略,把状态维护在session中)
3. xml-java object serialize和Deserialize
4. 将来的其它RIA技术
所以,从系统总结架构考虑,我是坚决杜绝使用将lazy机制扩散到service层以外的。
我的建议是web层存在一个剪裁过的VO,与Service层的PO完成自动数据的复制(手工 or 基于元数据描述)
但不可否认,lazy loading在适当的场合还是能发挥其作用的
http://www.iteye.com/post/282606
也结合自己目前遇到的问题
我认为Hibernate Lazy loading(主要指使用OpenSessionInView)机制是不能用在稍微复杂的企业系统中的
它看似方便,走了捷径,其实破坏了固有的分层结构,把本该属于持久层的机制四处传播,同时也带来了很多风险,会影响其他的功能的使用
主要体现在
1. Web remoting
2. Cluster环境session对象序列化的问题(现在越来越多的框架会根据一顶的策略,把状态维护在session中)
3. xml-java object serialize和Deserialize
4. 将来的其它RIA技术
所以,从系统总结架构考虑,我是坚决杜绝使用将lazy机制扩散到service层以外的。
我的建议是web层存在一个剪裁过的VO,与Service层的PO完成自动数据的复制(手工 or 基于元数据描述)
但不可否认,lazy loading在适当的场合还是能发挥其作用的