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

io.ebeaninternal.server.transaction.TransactionFactoryBasic Maven / Gradle / Ivy

There is a newer version: 15.8.1
Show newest version
package io.ebeaninternal.server.transaction;

import io.ebean.util.JdbcClose;
import io.ebeaninternal.api.SpiTransaction;

import javax.persistence.PersistenceException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * Transaction factory when no multi-tenancy is used.
 */
class TransactionFactoryBasic extends TransactionFactory {

  private final DataSource dataSource;

  TransactionFactoryBasic(TransactionManager manager, DataSourceSupplier dataSourceSupplier) {
    super(manager);
    this.dataSource = dataSourceSupplier.getDataSource();
  }

  @Override
  public SpiTransaction createQueryTransaction(Object tenantId) {

    Connection connection = null;
    try {
      connection = dataSource.getConnection();
      return create(false, connection);

    } catch (PersistenceException ex) {
      JdbcClose.close(connection);
      throw ex;
    } catch (SQLException ex) {
      throw new PersistenceException(ex);
    }
  }

  @Override
  public SpiTransaction createTransaction(boolean explicit, int isolationLevel) {
    Connection connection = null;
    try {
      connection = dataSource.getConnection();
      SpiTransaction t = create(explicit, connection);
      return setIsolationLevel(t, explicit, isolationLevel);
    } catch (PersistenceException ex) {
      JdbcClose.close(connection);
      throw ex;
    } catch (SQLException ex) {
      throw new PersistenceException(ex);
    }
  }

  private SpiTransaction create(boolean explicit, Connection c) {
    return manager.createTransaction(explicit, c, counter.incrementAndGet());
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy