mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#919 - io.ebean package initial
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package io.ebeaninternal.server.transaction;
|
||||
|
||||
import io.ebeaninternal.api.SpiTransaction;
|
||||
import io.ebeaninternal.util.JdbcClose;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import javax.persistence.PersistenceException;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
/**
|
||||
* Creates transactions with implementations for basic mode and multi-tenancy mode.
|
||||
*/
|
||||
abstract class TransactionFactory {
|
||||
|
||||
static final Logger TXN_LOGGER = TransactionManager.TXN_LOGGER;
|
||||
|
||||
final AtomicLong counter = new AtomicLong(1000);
|
||||
|
||||
final TransactionManager manager;
|
||||
|
||||
TransactionFactory(TransactionManager manager) {
|
||||
this.manager = manager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a new query only transaction.
|
||||
*
|
||||
* @param tenantId The tenantId for lazy loading queries.
|
||||
*/
|
||||
abstract SpiTransaction createQueryTransaction(Object tenantId);
|
||||
|
||||
/**
|
||||
* Return a new transaction.
|
||||
*/
|
||||
abstract SpiTransaction createTransaction(boolean explicit, int isolationLevel);
|
||||
|
||||
/**
|
||||
* Set the Transaction Isolation level if required.
|
||||
*/
|
||||
SpiTransaction setIsolationLevel(SpiTransaction t, boolean explicit, int isolationLevel) {
|
||||
|
||||
if (isolationLevel > -1) {
|
||||
Connection connection = t.getConnection();
|
||||
try {
|
||||
connection.setTransactionIsolation(isolationLevel);
|
||||
} catch (SQLException e) {
|
||||
JdbcClose.close(connection);
|
||||
throw new PersistenceException(e);
|
||||
}
|
||||
}
|
||||
|
||||
if (explicit && TXN_LOGGER.isTraceEnabled()) {
|
||||
TXN_LOGGER.trace(t.getLogPrefix() + "Begin");
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user