io.ebeaninternal.server.core.Persister Maven / Gradle / Ivy
package io.ebeaninternal.server.core;
import io.ebean.CallableSql;
import io.ebean.MergeOptions;
import io.ebean.Query;
import io.ebean.SqlUpdate;
import io.ebean.Transaction;
import io.ebean.Update;
import io.ebean.bean.EntityBean;
import io.ebean.meta.MetricVisitor;
import io.ebeaninternal.api.SpiTransaction;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import java.util.Collection;
import java.util.List;
/**
* API for persisting a bean.
*/
public interface Persister {
/**
* Merge the bean.
*/
int merge(BeanDescriptor desc, EntityBean entityBean, MergeOptions options, SpiTransaction transaction);
/**
* Update the bean.
*/
void update(EntityBean entityBean, Transaction t);
/**
* Update the bean specifying deleteMissingChildren.
*/
void update(EntityBean entityBean, Transaction t, boolean deleteMissingChildren);
/**
* Force an Insert using the given bean.
*/
void insert(EntityBean entityBean, Transaction t);
/**
* Insert or update the bean depending on its state.
*/
void save(EntityBean entityBean, Transaction t);
/**
* Delete a bean given it's type and id value.
*
* This will also cascade delete one level of children.
*
*/
int delete(Class beanType, Object id, Transaction transaction, boolean permanent);
/**
* Delete the bean.
*/
int delete(EntityBean entityBean, Transaction t, boolean permanent);
/**
* Delete multiple beans given a collection of Id values.
*/
int deleteMany(Class beanType, Collection ids, Transaction transaction, boolean permanent);
/**
* Execute the Update.
*/
int executeOrmUpdate(Update update, Transaction t);
/**
* Execute the UpdateSql.
*/
int executeSqlUpdate(SqlUpdate update, Transaction t);
/**
* Execute the CallableSql.
*/
int executeCallable(CallableSql callable, Transaction t);
/**
* Publish the draft beans matching the given query.
*/
List publish(Query query, Transaction transaction);
/**
* Restore the draft beans back to the matching live beans.
*/
List draftRestore(Query query, Transaction transaction);
/**
* Visit the metrics.
*/
void visitMetrics(MetricVisitor visitor);
}