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

com.owdp.dbutil.Transactional Maven / Gradle / Ivy

The newest version!
package com.owdp.dbutil;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * 
 * DbUtil的事务管理器,主要方法:
 *
 * {@link #begin()}
 * {@link #commit()}
 *
 * 一般的,回滚(rollback)操作会在发生{@link SQLException}时自动触发,无需手动执行。
 * 
*/ public final class Transactional { private static ThreadLocal local = new ThreadLocal(); /** *
     * 开始一个新的事务。
     * 如果一个事务已开始,在执行sql查询时,如果发生{@link SQLException}异常,会自动回滚(rollback),无需手动回滚。
     * 
*/ public static void begin(){ try { Connection connection = DbUtils.getConnection(); connection.setAutoCommit(false); local.set(true); }catch (SQLException e){ DbUtils.getExceptionCaught().sqlError(e); throw new QueryException(e); } } /** * 事务是否已经开始 * @return 事务是否已经开始 */ public static boolean hasBegin(){ return local.get() == null ? false : local.get(); } /** * 回滚(rollback)一个已开始的事务。 */ public static void rollback(){ try { Connection connection = DbUtils.getConnection(); connection.rollback(); }catch (SQLException e){ DbUtils.getExceptionCaught().sqlError(e); throw new QueryException(e); } } /** * 提交一个一开始的事务 */ public static void commit(){ Connection connection = null; try { connection = DbUtils.getConnection(); if(!connection.getAutoCommit()){ connection.commit(); connection.setAutoCommit(true); } }catch (SQLException e){ DbUtils.getExceptionCaught().sqlError(e); throw new QueryException(e); }finally { local.set(false); if(connection != null){ try { connection.close(); } catch (SQLException e) {} } } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy