解决session关闭时再调用对象方法时报session已关闭问题
来源:互联网 发布:剑三脸型数据导入不了 编辑:程序博客网 时间:2024/05/16 23:55
session关闭以后,如果还想用相关的对象,比如在页面中进行输出,但又不至于出现session已关闭的错误而导致无法获取对象的信息,本文提供三种解决方式:
1:第一次获得该对象的时候用get而不用load,因get不支持懒加载,在get该对象的同时会想数据库发出sql语句,取出该对象的相应信息放入缓存中,下次即使session已经关闭,因缓存中有相应的数据,查找该对象时会首先从缓存中查询,直接拿来用就ok了
2:可以把相应对象的lazy设为false,这样在load该对象的同时就会发sql语句取出该对象放到缓存中,以后再用可以直接从缓存中取,从而也避免了该异常
3:采用openSessionInView 该方式是通过延长session的时间方式来解决的,可以写一个filter或者inteceptor,下面以filter为例
private SessionFactory sf;
//filter -- >
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
// sf.getCurrentSession();//获得和当前线程绑定的session
sf.getCurrentSession().beginTransaction();
chain.doFilter(request, response);
sf.getCurrentSession().getTransaction().commit();
} catch (StaleObjectStateException staleEx) {
throw staleEx;
} catch (Throwable ex) {
ex.printStackTrace();
try {
if (sf.getCurrentSession().getTransaction().isActive()) {
sf.getCurrentSession().getTransaction().rollback();
}
} catch (Throwable rbEx) {
}
throw new ServletException(ex);
}
}
public void init(FilterConfig filterConfig) throws ServletException {
sf = HibernateSessionFactory.getSessionFactory();
}
public void destroy() {
}
- 解决session关闭时再调用对象方法时报session已关闭问题
- 解决session关闭时再调用对象方法时报session已关闭问题
- 解决session关闭时再调用对象方法时报session已关闭问题
- SSH session连接关闭问题的解决
- SSH session连接关闭问题的解决
- 使用OpenSessionInViewFilter解决session关闭问题
- 项目不定时报hibernate的session没有关闭的问题
- dblink关闭session问题
- 关闭浏览器时候Session对象
- 关闭浏览器session对象失效
- spring data jpa session 查询时 session 已经关闭问题
- Spring.....session 什么时候 关闭问题
- 解决Hibernate的Session的关闭与开启问题
- 解决Hibernate的Session的关闭与开启问题
- 页面关闭时结束Session
- 关闭浏览器时,释放session
- 解决session 关闭问题 WARN - unclosed connection, forgot to call close() on your session?
- 终于找到关闭IE时清理Session的方法了
- Oracle 系统表
- SQL Server 2005维护文档
- 时间利用率太低
- 设置文字两端对齐
- ORA-01779错误
- 解决session关闭时再调用对象方法时报session已关闭问题
- ORACLE有意思的树结构用法CONNECT BY
- 初来乍到
- Memcache教程
- 叛逃Intel
- Unable to locate Spring NamespaceHandler for XML schema namespace 【http://www.springframework.org/schema/context】
- 有关终止线程的一个问题
- vb.net中使用wmi关闭远程计算机上的进程
- 今天是第一天 开博客