All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jfireframework.jfireSqlStarter.TxManager Maven / Gradle / Ivy

package com.jfireframework.jfireSqlStarter;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.jfireframework.baseutil.exception.UnSupportException;
import com.jfireframework.jfire.support.BeanInstanceResolver.extend.aop.tx.TransactionManager;
import com.jfireframework.sql.session.SessionFactory;
import com.jfireframework.sql.session.SqlSession;

public class TxManager implements TransactionManager
{
    private SessionFactory      sessionFactory;
    private static final Logger logger = LoggerFactory.getLogger(TxManager.class);
    
    @Override
    public void beginTransAction(int isolate)
    {
        logger.trace("事务开启");
        SqlSession session = sessionFactory.getCurrentSession();
        if (session == null)
        {
            throw new UnSupportException("准备开启事务但是没有session,请检查");
        }
        session.beginTransAction(isolate);
    }
    
    @Override
    public void commit()
    {
        logger.debug("提交事务");
        SqlSession session = sessionFactory.getCurrentSession();
        if (session == null)
        {
            throw new RuntimeException("事务在提交时没有session,session可能于其他地方被清楚,请检查");
        }
        session.commit();
    }
    
    @Override
    public void rollback(Throwable e)
    {
        logger.trace("事务回滚");
        SqlSession session = sessionFactory.getCurrentSession();
        if (session == null)
        {
            throw new UnSupportException("准备回滚事务但是没有session,请检查", e);
        }
        session.rollback();
    }
    
    public void setSessionFactory(SessionFactory sessionFactory)
    {
        this.sessionFactory = sessionFactory;
    }
    
    @Override
    public void buildCurrentSession()
    {
        sessionFactory.getOrCreateCurrentSession();
    }
    
    @Override
    public void closeCurrentSession()
    {
        SqlSession session = sessionFactory.getCurrentSession();
        if (session == null)
        {
            throw new UnSupportException("准备关闭但是没有session,请检查");
        }
        session.close();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy