浅谈如何结合JDBC事务与Spring+Hibernate - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-14
nTransaction(conn); } catch (RuntimeException ex) { doRollback(session, transaction); throw ex; } catch (Error err) { doRollback(session, transaction); throw err; } //如果数据库操作过程中没有发生异常则提交事务 transaction.commit(); } catch (WorkflowException e) { logger.error("数据库操作失败,事务回滚也失败!"); throw e; } catch (RuntimeException ex) { logger.error("数据库操作失败,事务被回滚!"); throw ex; } catch (Error err) { logger.error("数据库操作失败,事务被回滚!"); throw err; } finally { // 将session与当前线程解除绑定 TransactionSynchronizationManager.unbindResource(sessionFactory); doClose(session); } return result; } protected Session getSession(SessionFactory sessionFactory) { Session session = SessionFactoryUtils.getSession(sessionFactory, true); FlushMode flushMode = getFlushMode(); if (flushMode != null) { session.setFlushMode(flushMode); } return session; } private void doRollback(Session session, Transaction transaction) { logger.debug("数据库操作异常,开始回滚事务"); try { transaction.rollback(); logger.debug("回滚事务成功!"); } catch (Exception e) { logger.error("回滚事务失败!"); throw new WorkflowException("回滚事务失败!"); } finally { session.clear(); } } private void doClose(Session session) { logger.debug("开始关闭连接"); try { session.close(); } catch (Exception e) { logger.error("关闭连接失败!"); throw new WorkflowException("关闭连接失败!"); } } public FlushMode getFlushMode() { |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于浅谈如何结合JDBC事务与Spring+Hibernate - 编程入门网的所有评论