spring和hibernate整合后手动管理事务工具类
来源:互联网 发布:vr全景视频制作软件 编辑:程序博客网 时间:2024/04/24 13:01
import org.apache.log4j.Logger;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.orm.hibernate3.SessionFactoryUtils;import org.springframework.orm.hibernate3.SessionHolder;import org.springframework.transaction.support.TransactionSynchronizationManager;import com.isoftstone.fwk.dao.DaoFactory;import com.isoftstone.fwk.util.SpringUtils;public class DaoFactoryMod {public static Logger logger = Logger.getLogger(DaoFactoryMod.class);//**************************************************************************/** * 提交当前事务<br> * 重写DaoFactory的同名方法,其方法在提交事务后结束了session * @param 参数 说明 * @return void 返回值 说明 * @throws 异常 说明 *///**************************************************************************public static void commitTransaction(SessionFactory sessionfactory, boolean flag) throws Exception{ Transaction transaction; Session session; transaction = null; session = null; try { SessionHolder sessionholder = (SessionHolder)TransactionSynchronizationManager.getResource(sessionfactory); logger.debug("◆◆◆提交事务时sessionholder:"+sessionholder); logger.debug("\u4E8B\u52A1\u63D0\u4EA4\u5F00\u59CB============"); if(sessionholder != null) { session = sessionholder.getSession(); logger.debug("◆◆◆提交事务时session:"+session); transaction = session.getTransaction(); if(transaction != null && transaction.isActive()) { transaction.commit(); logger.debug("◆◆◆提交事务时transaction:"+transaction); transaction = null; } } logger.debug("\u4E8B\u52A1\u63D0\u4EA4\u7ED3\u675F============"); } catch(Exception exception) { if(flag) { session.clear();//回滚事务前一定要先清空session,否则rollback无效 logger.debug("◆◆◆回滚事务前清空session:"+session); transaction.rollback(); logger.debug("◆◆◆提交事务时回滚transaction:"+transaction); } exception.printStackTrace(); throw exception; } return;}//**************************************************************************/** * 回滚当前事务<br> * 重写DaoFactory的同名方法,其方法在回滚事务后结束了session * @param 参数 说明 * @return void 返回值 说明 * @throws 异常 说明 *///**************************************************************************public static void rollbackTransaction(SessionFactory sessionfactory) throws Exception{ Session session; Object obj = null; session = null; try { SessionHolder sessionholder = (SessionHolder)TransactionSynchronizationManager.getResource(sessionfactory); logger.debug("◆◆◆回滚事务时sessionholder:"+sessionholder); if(sessionholder != null) { session = sessionholder.getSession(); logger.debug("◆◆◆回滚事务时session:"+session); Transaction transaction = session.getTransaction(); session.clear();//回滚事务前一定要先清空session,否则rollback无效 logger.debug("◆◆◆回滚事务前清空session:"+session); transaction.rollback(); logger.debug("◆◆◆回滚事务时回滚transaction:"+transaction); } } catch(Exception exception) { exception.printStackTrace(); throw exception; } return;}//**************************************************************************/** * 获取或创建hibernate session绑定到当前线程<br> * 为后台定时任务线程创建session * @param 参数 说明 * @return void 返回值 说明 * @throws 异常 说明 *///**************************************************************************public static void bindSession(){logger.debug("\n\n");logger.debug("〓〓〓〓〓〓〓〓〓〓〓 开始获得或者创建hibernate session绑定到当前线程! 〓〓〓〓〓〓〓〓〓〓〓");logger.debug("-----------------------------------------------------------------");SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");//从spring中获取sessionFactorylogger.debug("◆◆◆绑定session时sessionfactory:"+sf);Session session = SessionFactoryUtils.getSession(sf, true);logger.debug("◆◆◆绑定session时session:"+session);//session.beginTransaction();SessionHolder sessionholder = new SessionHolder(session);logger.debug("◆◆◆绑定session时sessionholder:"+sessionholder);TransactionSynchronizationManager.bindResource(sf,sessionholder);logger.debug("▲▲▲▲▲▲▲▲▲▲ 获得或者创建hibernate session绑定到当前线程成功! ▲▲▲▲▲▲▲▲▲▲");}//**************************************************************************/** * 开始绑定到当前线程的session的事务<br> * 为后台定时任务线程开启事务 * @param 参数 说明 * @return void 返回值 说明 * @throws 异常 说明 *///**************************************************************************public static void beginTransaction(){SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");logger.debug("◆◆◆开始事务时sessionfactory:"+sf);Session session = SessionFactoryUtils.getSession(sf, true);logger.debug("◆◆◆开始事务时session:"+session);Transaction transaction=session.beginTransaction();logger.debug("◆◆◆开始事务时transaction:"+transaction);logger.debug("▲▲▲▲▲▲▲▲▲▲ 开始绑定到当前线程的session的事务! ▲▲▲▲▲▲▲▲▲▲");}//**************************************************************************/** * 提交绑定到当前线程的session的事务,提交失败后会自动回滚<br> * 为后台定时任务线程提交事务 * @param 参数 说明 * @return void 返回值 说明 * @throws 异常 说明 *///**************************************************************************public static void commitTransaction(){SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");logger.debug("◆◆◆提交事务时sessionfactory:"+sf);try {DaoFactoryMod.commitTransaction(sf,true);//DaoFactory.commitTransaction(sf);} catch (Exception e) {e.printStackTrace();}logger.debug("▲▲▲▲▲▲▲▲▲▲ 提交绑定到当前线程的session的事务! ▲▲▲▲▲▲▲▲▲▲");}//**************************************************************************/** * 回滚绑定到当前线程的session的事务<br> * 为后台定时任务线程回滚事务 * @param 参数 说明 * @return void 返回值 说明 * @throws 异常 说明 *///**************************************************************************public static void rollbackTransaction(){SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");logger.debug("◆◆◆回滚事务时sessionfactory:"+sf);try {DaoFactoryMod.rollbackTransaction(sf);//DaoFactory.rollbackTransaction(sf);} catch (Exception e) {e.printStackTrace();}logger.debug("▲▲▲▲▲▲▲▲▲▲ 回滚绑定到当前线程的session的事务! ▲▲▲▲▲▲▲▲▲▲");}//**************************************************************************/** * 解除当前线程的session绑定并关闭session<br> * 为后台定时任务线程关闭session * @param 参数 说明 * @return void 返回值 说明 * @throws 异常 说明 *///**************************************************************************public static void unbindSession(){SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");logger.debug("◆◆◆解除绑定session时sessionfactory:"+sf);try {Session session = SessionFactoryUtils.getSession(sf, true);logger.debug("◆◆◆解除绑定session时session:"+session);DaoFactory.unbindTransaction(sf);session.close();logger.debug("◆◆◆解除绑定session时关闭session:"+session);} catch (Exception e) {e.printStackTrace();}logger.debug("---------------------------------------------");logger.debug("〓〓〓〓〓〓〓〓〓〓〓 解除当前线程的session绑定! 〓〓〓〓〓〓〓〓〓〓〓");logger.debug("=============================================");logger.debug("\n\n");}}
1 0
- spring和hibernate整合后手动管理事务工具类
- Spring整合Hibernate事务
- Spring 整合Hibernate 事务代理类解决方案
- 【JavaWeb-25】事务管理相关知识、手动/半自动/自动管理事务案例、整合Junit、整合Web、spring和hibernate整合、struts2和spring整合
- Spring整合Hibernate管理事务(xml配置方式)
- spring管理hibernate事务
- Spring管理Hibernate事务
- Spring管理Hibernate事务
- Spring管理Hibernate事务
- Spring管理Hibernate事务
- 【spring 6】Spring和Hibernate的整合:编程式事务
- 【spring 7】spring和Hibernate的整合:声明式事务
- spring-hibernate整合 事务不起作用
- spring hibernate整合时配置文件的事务部分(spring管理事务)
- 整合spring和hibernate框架中事务的声明
- Spring整合Hibernate【Session管理】
- Spring整合Hibernate【Session管理】
- 整合Spring和Hibernate
- mysql存储过程和游标使用实例
- MAC下Java 反编译利器 JD-GUI/Jad/JadClipse
- 写给自己部门的一个优化文档
- 服务器网络调优的一些参数
- iOS内测流程
- spring和hibernate整合后手动管理事务工具类
- GCM/XMPP/MQTT
- IDA so 反调试
- 微信公众号菜单创建
- 安卓Activity的生命周期
- DatabaseLibrary—Oracle的测试介绍之windows篇
- jeecg入门
- CloseHandle()的作用
- 双目立体视觉的数学原理