package org.cryptocoinpartners.schema.dao;
import java.util.List;
import java.util.UUID;
import javax.persistence.NoResultException;
import org.cryptocoinpartners.schema.EntityBase;
import org.cryptocoinpartners.util.Visitor;
public interface Dao {
void persist(EntityBase... entities);
void detach(EntityBase... entities);
EntityBase refresh(EntityBase... entities);
void merge(EntityBase... entities);
void persistEntities(EntityBase... entities);
void mergeEntities(EntityBase... entities);
void deleteEntities(EntityBase... entities);
void delete(EntityBase... entities);
<T> T find(Class<T> resultType, UUID id);
boolean contains(EntityBase entity);
<T> T queryZeroOne(Class<T> resultType, String queryStr, Object... params);
<T> List<T> queryList(Class<T> resultType, String queryStr, Object... params);
<T> T namedQueryOne(Class<T> resultType, String namedQuery, Object... params) throws NoResultException;
<T extends EntityBase> T findById(Class<T> resultType, UUID id) throws NoResultException;
void queryEach(Visitor<Object[]> handler, String queryStr, Object... params);
<T> void queryEach(Class<T> resultType, Visitor<T> handler, int batchSize, String queryStr, Object... params);
<T> void queryEach(Class<T> resultType, Visitor<T> handler, String queryStr, Object... params);
void queryEach(Visitor<Object[]> handler, int batchSize, String queryStr, Object... params);
<T> int findRevisionById(Class<T> resultType, UUID id) throws NoResultException;
// T queryZeroOne(Class<T> resultType, String queryStr, Object[] params);
// T queryZeroOne(Class<T> resultType, String queryStr, Object[] params);
//public <T> T queryOne(Class<T> resultType, String queryStr, Object... params);
}