Skip to content

Latest commit

 

History

History
55 lines (44 loc) · 1.41 KB

File metadata and controls

55 lines (44 loc) · 1.41 KB

public class TransactionManager{
    private DataSource dataSource;
    
    public TransactionManager(DataSource dataSource){
        this.dataSource = dataSource;
    }
    
    public final void star() throws SQLException{
        Connection connection = getConnection();
        connection.setAutoCommit(false);
    }
    
    public final void commit() throws SQLException{
        Connection connection = getConnection();
        connection.commit();
    }
    
    public final void rollback(){
        Connection connection =null;
        
        try
        {
            connection = getConnection();
            connection.rollback();        
        } catch (SQLException e)
        {
            throw new RuntimeException("Couldn't rollback on connection[" + connection + "].", e");
        }
    }
    
    public final void close(){
        Connection connection = null;
        try
        {
            connection =getConnection();
            connection.setAutoCommit(true);
            connection.setReadOnly(false);
            connection.close();
            SingleThreadConnectionHolder.removeConnection(dataSource);
        }catch (SQLException e)
        {
            throw new RuntimeException("Couldn't close connection[" + connection + "].", e);
        }
    }
    
    private Connection getConnection() throws SQLException{
        return SingleThreadConnectionHolder.getConnection(dataSource);
    }
}