⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hibernatesessionjmttx.java

📁 一个java工作流引擎
💻 JAVA
字号:
package org.jbpm.persistence.hibernate;

import org.apache.commons.logging.*;
import org.jbpm.*;
import org.jbpm.persistence.*;
import net.sf.hibernate.*;

public class HibernateSessionJmtTx extends HibernateSession implements PersistenceSessionTx {
  
  private Transaction transaction = null;

  public HibernateSessionJmtTx(Session session) {
    super(session);
    try {
      log.debug( "starting jbpm managed transaction..." );
      transaction = session.beginTransaction();
    } catch (HibernateException e) {
      e.printStackTrace();
      throw new PersistenceException("couldn't begin a jbpm managed transaction", e);
    }
  }

  public HibernateSessionJmtTx(SessionFactory sessionFactory) {
		super(sessionFactory);
    try {
      log.debug( "starting jbpm managed transaction..." );
      transaction = session.beginTransaction();
		} catch (HibernateException e) {
			e.printStackTrace();
      throw new PersistenceException("couldn't begin a jbpm managed transaction", e);
		}
	}

  public void commitAndClose() {
    log.debug( "committing jbpm managed transaction" );
    String errorMessage = "";

    // HIBERNATE SESSION FLUSH
    try {
      if (session!=null) session.flush();
    } catch (HibernateException e) {
      e.printStackTrace();
      errorMessage += "couldn't flush hibernate session (" + e.getMessage() + ")  ";
    }

    // HIBERNATE TRANSACTION COMMIT
    try {
      if (transaction!=null) transaction.commit();
    } catch (HibernateException e) {
      e.printStackTrace();
      errorMessage += "couldn't commit transaction (" + e.getMessage() + ")  ";
    }
    transaction = null;
    
    // HIBERNATE SESSION CLOSE
    try {
      if (session!=null) session.close();
    } catch (HibernateException e) {
      e.printStackTrace();
      errorMessage += "couldn't close session (" + e.getMessage() + ")  ";
    }
    session = null;
    
    if ( ! "".equals( errorMessage ) ) {
      throw new PersistenceException( "couldn't commit jbpm managed transaction : " + errorMessage );
    }
  }

  public void rollbackAndClose() {
    log.debug( "rolling back jbpm managed transaction" );
    String errorMessage = "";

    // HIBERNATE TRANSACTION COMMIT
    try {
      if (transaction!=null) transaction.rollback();
    } catch (HibernateException e) {
      e.printStackTrace();
      errorMessage += "couldn't rollback (" + e.getMessage() + ")  ";
    }
    transaction = null;

    // HIBERNATE SESSION CLOSE
    try {
      if (session!=null) session.close();
    } catch (HibernateException e) {
      e.printStackTrace();
      errorMessage += "couldn't close session (" + e.getMessage() + ")  ";
    }
    session = null;

    if ( ! "".equals( errorMessage ) ) {
      throw new PersistenceException( "couldn't rollback jbpm managed transaction : " + errorMessage );
    }
  }

  private static Log log = LogFactory.getLog(HibernateSessionJmtTx.class);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -