Hibernate managed by Spring



我只想问一下,我已经看到一些代码,其中Hibernate会话对象由Spring管理,并将其自动连接为SINGLETON bean。这是一个好的做法吗??对象将在多用户环境中共享,或者将其声明为代理不是更好吗??

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

最新更新