文章标题

来源:互联网 发布:自然系果实觉醒知乎 编辑:程序博客网 时间:2024/06/08 09:37

如果不使用懒加载的请跳过…

对于懒加载:顾名思义,就是加载一个实体对象是,不会一次性全部查询出来,对于关联表实体或集合会延迟查询,等到需要使用的时候就会去加载,对于懒加载的好处就不用说了,强烈推荐使用。
但是使用懒加载的时候回莫名出现很多异常:
1.org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role :could not initialize proxy - no Session
这种异常时因为:
protected Session getSession(){
return sessionFactory.getCurrentSession();
}
getCurrentSession();获取的session不支持懒加载,创建的session在commit或rollback时会自动关闭。但是使用openSession()方法就不会出现异常。
为了解决getCurrentSession()的session与懒加载的冲突,需要在web.xml中引入spring的过滤器,让请求完成之后关闭session,这样就是一个两全其美的方法。

OpenSessionInViewFilter
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter

sessionFactoryBeanName
sessionFactory

<filter-mapping>    <filter-name>OpenSessionInViewFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>
原创粉丝点击