我对Spring很新,我想了解更多有关会话的内容。我已经使用Hibernate注释过的实体映射了遗留数据库,并构建了一些服务对象来提取,检索等。我的实体还包含其他实体(通过外键映射)和实体集。当我在我的服务中遍历entitiy图时,我没有问题。我的服务被包装在一个TransactionProxyFactoryBean中,所以一切都应该很好。Spring中的数据库会话
因此,在我的视图控制器中,我从服务请求了一堆实体。但是当我遍历我的视图控制器中的实体图形(例如显示用户状态的国家名称,州和国家都是懒惰加载的实体)时,Hibernate会话已经关闭,我得到一个“LazyInitializationException:无法初始化代理 - 没有会话“
我不希望我的服务急于获取数据,这将消耗多少内存,因为我的图形很深,甚至可以有循环引用。我也不想明确地触及我将在服务中显示的部分,因为这意味着我必须一遍又一遍地复制/粘贴类似的服务。所以我想要的是当我在视图控制器中时,Hibernate会话仍然打开,并且在视图被提供之前不关闭会话。我可以做些什么来保持它的开放?
我的视图bean看起来像这样,有没有什么办法可以将我的TransactionProxyFactoryBean派生的bean注入它?
<bean name="/" class="example.SimpleViewController">
<property name="userService" ref="userService"/>
<property name="catalogService" ref="catalogService"/>
</bean>
干杯
聂
非常常见的问题。在过滤器中打开会话是要走的路。 – 2009-08-25 20:01:33