Hibernate由Spring管理

时间:2012-03-24 04:54:17

标签: spring hibernate

只是想问我已经看到一些代码,其中Hibernate会话对象被Spring作为自动连接它作为SINGLETON bean。这样做是好的做法吗?该对象将以多用户环境的形式共享,或者最好将其声明为代理?

1 个答案:

答案 0 :(得分:0)

会话不应该是SINGLETON bean,不应该跨应用程序共享。在多用户环境中,每个用户都应拥有自己的会话实例。一种广泛使用的方法是在启动请求时打开会话,并在请求完成时关闭它。 Spring通过提供OpenSessionInViewFilter来促进这种方法。如果您配置了此过滤器,Spring将负责会话生命周期,您只需使用SessionFactoryUtils.getSession()方法访问它。如果您使用的是Spring 3.1和Hibernate 4.x,则可以使用sessionFactory.getCurrentSession()访问会话。