本文共 1376 字,大约阅读时间需要 4 分钟。
Spring 提供了一个叫做 OpenSessionInViewFilter 的过滤器,这是一个标准的 Servlet Filter。为了使其正常工作,我们需要将它配置到 web.xml 文件中。使用 OpenSessionInViewFilter 时,我们需要配合使用 Spring 的 HibernateDaoSupport,从而确保我们的 DAO 层类继承于 HibernateDaoSupport。这样,Spring 会管理 Hibernate Session 的生命周期,即在请求开始时开启 Session,在请求结束时关闭 Session,保证了对持久层数据的稳定访问。
在 web.xml 中添加 OpenSessionInViewFilter 的配置如下:
openSessionInViewFilter org.springframework.orm.hibernate3.support.OpenSessionInViewFilter singleSession true
此外,我们可以指定 LocalSessionFactoryBean 的名称,默认值为 sessionFactory:
sessionFactoryBean sessionFactory
在访问持久层数据时,我们需要使用 Spring 提供的 HibernateDaoSupport 并调用其方法操作数据。例如,DAO 类可以继承 HibernateDaoSupport 并实现自定义的数据访问逻辑:
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class XxxDAO extends HibernateDaoSupport { public void save(Xxx transientInstance) { try { getHibernateTemplate().save(transientInstance); } catch (RuntimeException re) { throw re; } }} OpenSessionInViewFilter 的主要作用是将一个 Hibernate Session 与一次完整的 HTTP 请求关联起来。它会在请求开始时绑定 Session 到当前线程,并在请求结束后自动关闭 Session。这样,在视图层可以方便地进行懒加载操作,例如 ${company.employees}。
转载地址:http://kzvfk.baihongyu.com/