package +zoccolo+.jpa.dao; import java.util.Collection; import java.util.List; import +zoccolo+.jpa.Filter; import +zoccolo+.jpa.Order; import +zoccolo+.jpa.SearchParameter; /** * Generic CRUD interface implemented by all DAOs. * * @param entity to be managed. */ public interface GenericDao { /** * Persist the entity in DB (though a flush). * * @param entity * @return */ T create(T entity); /** * Flush DB changes made in the entity, merging if the entity * is detached from the session. * * @param entity * @return */ T update(T entity); /** * Effettua la rimozione dell'entity da db, effettuando il flush. * Esegue il merge se l'entity รจ detached dalla sessione. * * @param entity */ void remove(T entity); /** * Ritrova l'entity con id associato. * * @param entityClass * @param id * @return */ T findUniqueById(Class entityClass, Integer id); /** * Ritrova l'entity con id associato. * * @param entityClass * @param id * @return */ T findUniqueById(Class entityClass, Long id); /** * Ritrova l'entity con id associato. * * @param entityClass * @param id * @return */ T findUniqueById(Class entityClass, String id); /** * Effettua una ricerca generica per il valore di un parametro. * * @param entityClass Tipo di entity da ricercare. * @param fieldName Nome del campo di ricerca. * @param fieldClass Classe del campo di ricerca. * @param fieldValue Valore del campo di ricerca. * * @return Elenco non ordinato dei valori trovati. */ Collection findListBy(Class entityClass, String fieldName, Class fieldClass, Object fieldValue); /** * Effettua una ricerca full con ordinamento. * * @param entityClass Tipo di entity da ricercare. * @param order Elenco di elementi di ordinamento * @return Elenco ordinato di tutti gli elementi della tabella indicata dall'entity. */ Collection findAll(Class entityClass, Order ... order); /** * Verifica se esiste un record dall'id specificato. * * @param id * @param entityClass * @return */ Boolean exists(Class entityClass, Integer id); /** * Verifica se esiste un record dall'id specificato. * * @param id * @param entityClass * @return */ Boolean exists(Class entityClass, Long id); /** * Verifica se esiste un record dall'id specificato. * * @param id * @param entityClass * @return */ Boolean exists(Class entityClass, String id); /** * Ottiene una lista di risultati con una like. * * @param fieldValue * @param clazz * @return */ List like(Class fieldClazz, String fieldName, Class class1, String fieldValue); Long count(Class entityClass); Long count(Class entityClass, Filter filter); List fetch(Class entityClass, Filter filter, Order... order); boolean existsByFilename(Class entityClass, SearchParameter fileName); List oneColumnQuery(final String string); List manyColumnQuery(final String string); Object findByPrimary(Class entityClass, Object chiave); }