package io.ebeaninternal.server.persist;
import io.ebean.meta.MetricVisitor;
import io.ebeaninternal.api.SpiTransaction;
import io.ebeaninternal.server.core.PersistRequestCallableSql;
import io.ebeaninternal.server.core.PersistRequestOrmUpdate;
import io.ebeaninternal.server.core.PersistRequestUpdateSql;
The actual execution of persist requests.
A Persister 'front-ends' this object and handles the
batching, cascading, concurrency mode detection etc.
/**
* The actual execution of persist requests.
* <p>
* A Persister 'front-ends' this object and handles the
* batching, cascading, concurrency mode detection etc.
* </p>
*/
public interface PersistExecute {
Create a BatchControl for the current transaction.
/**
* Create a BatchControl for the current transaction.
*/
BatchControl createBatchControl(SpiTransaction t);
Execute a Update.
/**
* Execute a Update.
*/
int executeOrmUpdate(PersistRequestOrmUpdate request);
Execute a CallableSql.
/**
* Execute a CallableSql.
*/
int executeSqlCallable(PersistRequestCallableSql request);
Execute a UpdateSql.
/**
* Execute a UpdateSql.
*/
int executeSqlUpdate(PersistRequestUpdateSql request);
Collect execution metrics for sql update.
/**
* Collect execution metrics for sql update.
*/
void collectOrmUpdate(String label, long startNanos, int rowCount);
Collect execution metrics for sql update.
/**
* Collect execution metrics for sql update.
*/
void collectSqlUpdate(String label, long startNanos, int rowCount);
Collect execution metrics for sql callable.
/**
* Collect execution metrics for sql callable.
*/
void collectSqlCall(String label, long startNanos, int rowCount);
Visit the metrics.
/**
* Visit the metrics.
*/
void visitMetrics(MetricVisitor visitor);
}