解决多线程中hibernate出现no session问题
来源:互联网 发布:伊藤绫子二宫和也 知乎 编辑:程序博客网 时间:2024/06/10 20:15
新起的线程需要绑定Hibernate session,才能在新线程中使用事务和延迟加载等功能,否则会曝出no session异常;
private class MyThread extends Thread {@Overridepublic void run() {while (true) {//绑定session到当前线程boolean participate = BackstageMgrApiImpl.bindHibernateSessionToThread(sessionFactory);//业务逻辑//关闭sessionBackstageMgrApiImpl.closeHibernateSessionFromThread(participate, sessionFactory);}}}// 关闭Sessionpublic static void closeHibernateSessionFromThread(boolean participate, Object sessionFactory) {if (!participate) {SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.unbindResource(sessionFactory);SessionFactoryUtils.closeSession(sessionHolder.getSession());}}// 绑定Session到新的线程public static boolean bindHibernateSessionToThread(SessionFactory sessionFactory) {if (TransactionSynchronizationManager.hasResource(sessionFactory)) {// Do not modify the Session: just set the participate flag.return true;} else {Session session = sessionFactory.openSession();session.setFlushMode(FlushMode.MANUAL);SessionHolder sessionHolder = new SessionHolder(session);TransactionSynchronizationManager.bindResource(sessionFactory, sessionHolder);}return false;}
事务边界则由aop或者Transactional标记来控制,示例代码只是保证具备事务性的方法在需要的时候能从当前线程中获得session对象。
上述代码大部分截取自Spring的OpenSessionInViewFilter。
阅读全文
0 0
- 解决多线程中hibernate出现no session问题
- ssh中出现no session的问题
- 在spring,hibernate,struts2框架整合中出现的no session问题
- 使用Hibernate.initialize解决no session的延迟加载问题
- 使用Hibernate.initialize解决no session的延迟加载问题
- 解决hibernate中session的问题
- spring 任务调度中出现懒加载 no session 问题
- Hibernate延迟加载 或 no session or session was closed 问题的解决(OpenSessionInViewFilter使用)
- Hibernate中使用Session中出现的问题
- EJB项目出现“org.hibernate.LazyInitializationException: could not initialize proxy - no Session”异常解决
- 过滤器解决Hibernate中(no session or session was closed)异常
- 解决一个Sping管理hibernate时的事务问题(No Hibernate Session bound to thread)
- SSH中Hibernate中报错No Hibernate Session bound to thread解决
- 关于出现No Hibernate Session bound to thread问题的记录
- 关于出现No Hibernate Session bound to thread问题的记录
- 解决Hibernate延迟加载出现session过期的问题(hibernate操作3次后无反应)
- 在hibernate4中出现org.hibernate.HibernateException: No Session found for current thread
- Hibernate no session or session was closed 解决
- 什么样的人当不好程序员?有你吗?
- Java编程思想(第4版) 中文清晰PDF完整版
- Java关键字abstract
- 第26篇.u盘安装系统
- 测试csdn markdown写作体验
- 解决多线程中hibernate出现no session问题
- thymeleaf模板的使用
- 我很忙,我没有时间,所以我无法成为更有价值的人
- 有序列表&无序列表&自定义列表
- 总算入手了Timing
- 微信分享
- Kafka是一种分布式的,基于发布/订阅的消息系统
- 基于javaMail的简单邮件发送
- SpringBoot集成Redis