关于open session in view,想在此请教!
最近公司开始了个新项目,使用的框架是Struts2+Spring2+Hibernate3,当然在这此我们不讨论架构。
主要是想讨论一下关于hibernate提到的open session in view.在我们的项目中,我们的事务边界是定界在service层。我们用hibernate的惰性加载,假设检索出一个对象A,这个对象又关联到另一对象B,那么我们检索完成对后就关闭了session,这时的B对象只是一个代理,并不是实际对象。那么当我们在界面上想通过检索出来的A对象再看B对象的属性的话,是不是要再重开一个session,把A对象再放到另一个session中去呢?这样如果应用open session in view,就不会出现这种脱管对象了,是吧,但这样的话,这个session不是要一直开着吗?这样对性能是一种考验吧。还有另一种做法是,检索出来A对象的时候通过copyproperties()拷贝出另一个对象出来,这样拷贝时就会把B对象的实际对象也检索出来关联到新的对象中去吧?但是这样也有问题:如果A对象里有n个类似于B对象的对象时又或者B对象还又关联到其他对象时,这个拷贝出来的对象不是会越来越大?这也是个问题,是吧?不知道各们对我的问题是不是认同,如果认同有什么解决方案?谢谢!