Search in sources :

Example 1 with Transaction

use of org.apache.ibatis.transaction.Transaction in project mybatis-3 by mybatis.

the class DefaultSqlSessionFactory method openSessionFromDataSource.

private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {
    Transaction tx = null;
    try {
        final Environment environment = configuration.getEnvironment();
        final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment);
        tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit);
        final Executor executor = configuration.newExecutor(tx, execType);
        return new DefaultSqlSession(configuration, executor, autoCommit);
    } catch (Exception e) {
        // may have fetched a connection so lets call close()
        closeTransaction(tx);
        throw ExceptionFactory.wrapException("Error opening session.  Cause: " + e, e);
    } finally {
        ErrorContext.instance().reset();
    }
}
Also used : Executor(org.apache.ibatis.executor.Executor) Transaction(org.apache.ibatis.transaction.Transaction) TransactionFactory(org.apache.ibatis.transaction.TransactionFactory) ManagedTransactionFactory(org.apache.ibatis.transaction.managed.ManagedTransactionFactory) Environment(org.apache.ibatis.mapping.Environment) SQLException(java.sql.SQLException)

Example 2 with Transaction

use of org.apache.ibatis.transaction.Transaction in project mybatis-3 by mybatis.

the class DefaultSqlSessionFactory method openSessionFromConnection.

private SqlSession openSessionFromConnection(ExecutorType execType, Connection connection) {
    try {
        boolean autoCommit;
        try {
            autoCommit = connection.getAutoCommit();
        } catch (SQLException e) {
            // Failover to true, as most poor drivers
            // or databases won't support transactions
            autoCommit = true;
        }
        final Environment environment = configuration.getEnvironment();
        final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment);
        final Transaction tx = transactionFactory.newTransaction(connection);
        final Executor executor = configuration.newExecutor(tx, execType);
        return new DefaultSqlSession(configuration, executor, autoCommit);
    } catch (Exception e) {
        throw ExceptionFactory.wrapException("Error opening session.  Cause: " + e, e);
    } finally {
        ErrorContext.instance().reset();
    }
}
Also used : Executor(org.apache.ibatis.executor.Executor) Transaction(org.apache.ibatis.transaction.Transaction) SQLException(java.sql.SQLException) TransactionFactory(org.apache.ibatis.transaction.TransactionFactory) ManagedTransactionFactory(org.apache.ibatis.transaction.managed.ManagedTransactionFactory) Environment(org.apache.ibatis.mapping.Environment) SQLException(java.sql.SQLException)

Example 3 with Transaction

use of org.apache.ibatis.transaction.Transaction in project mybatis-3 by mybatis.

the class ManagedTransactionFactoryTest method shouldEnsureThatCallsToManagedTransactionAPIDoNotForwardToManagedConnections.

@Test
public void shouldEnsureThatCallsToManagedTransactionAPIDoNotForwardToManagedConnections() throws Exception {
    TransactionFactory tf = new ManagedTransactionFactory();
    tf.setProperties(new Properties());
    Transaction tx = tf.newTransaction(conn);
    assertEquals(conn, tx.getConnection());
    tx.commit();
    tx.rollback();
    tx.close();
    verify(conn).close();
}
Also used : Transaction(org.apache.ibatis.transaction.Transaction) TransactionFactory(org.apache.ibatis.transaction.TransactionFactory) Properties(java.util.Properties) BaseDataTest(org.apache.ibatis.BaseDataTest) Test(org.junit.Test)

Example 4 with Transaction

use of org.apache.ibatis.transaction.Transaction in project mybatis-3 by mybatis.

the class ManagedTransactionFactoryTest method shouldEnsureThatCallsToManagedTransactionAPIDoNotForwardToManagedConnectionsAndDoesNotCloseConnection.

@Test
public void shouldEnsureThatCallsToManagedTransactionAPIDoNotForwardToManagedConnectionsAndDoesNotCloseConnection() throws Exception {
    TransactionFactory tf = new ManagedTransactionFactory();
    Properties props = new Properties();
    props.setProperty("closeConnection", "false");
    tf.setProperties(props);
    Transaction tx = tf.newTransaction(conn);
    assertEquals(conn, tx.getConnection());
    tx.commit();
    tx.rollback();
    tx.close();
    verifyNoMoreInteractions(conn);
}
Also used : Transaction(org.apache.ibatis.transaction.Transaction) TransactionFactory(org.apache.ibatis.transaction.TransactionFactory) Properties(java.util.Properties) BaseDataTest(org.apache.ibatis.BaseDataTest) Test(org.junit.Test)

Example 5 with Transaction

use of org.apache.ibatis.transaction.Transaction in project mybatis-3 by mybatis.

the class ResultLoader method newExecutor.

private Executor newExecutor() {
    final Environment environment = configuration.getEnvironment();
    if (environment == null) {
        throw new ExecutorException("ResultLoader could not load lazily.  Environment was not configured.");
    }
    final DataSource ds = environment.getDataSource();
    if (ds == null) {
        throw new ExecutorException("ResultLoader could not load lazily.  DataSource was not configured.");
    }
    final TransactionFactory transactionFactory = environment.getTransactionFactory();
    final Transaction tx = transactionFactory.newTransaction(ds, null, false);
    return configuration.newExecutor(tx, ExecutorType.SIMPLE);
}
Also used : ExecutorException(org.apache.ibatis.executor.ExecutorException) Transaction(org.apache.ibatis.transaction.Transaction) TransactionFactory(org.apache.ibatis.transaction.TransactionFactory) Environment(org.apache.ibatis.mapping.Environment) DataSource(javax.sql.DataSource)

Aggregations

Transaction (org.apache.ibatis.transaction.Transaction)5 TransactionFactory (org.apache.ibatis.transaction.TransactionFactory)5 Environment (org.apache.ibatis.mapping.Environment)3 SQLException (java.sql.SQLException)2 Properties (java.util.Properties)2 BaseDataTest (org.apache.ibatis.BaseDataTest)2 Executor (org.apache.ibatis.executor.Executor)2 ManagedTransactionFactory (org.apache.ibatis.transaction.managed.ManagedTransactionFactory)2 Test (org.junit.Test)2 DataSource (javax.sql.DataSource)1 ExecutorException (org.apache.ibatis.executor.ExecutorException)1