GenericDAO.java |
package com.demo.persistence; import java.io.Serializable; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.Criterion; /** * Generic DAO class. * @author lincolns, wallacew * @param <T> * @param <PK> */ public interface GenericDAO<T, PK extends Serializable> { /** * Persist the newInstance object into database. * @param newInstance to save * @return The identifier **/ PK save(T newInstance); /** * Save or update. * @param transientObject to save */ void saveOrUpdate(T transientObject); /** * Retrieve a persisted object with a given id from the database. * @param id to load * @return An object of type T */ T load(PK id); /** * Retrieve a persisted object with a given id from the database. * @param id to get * @return An object of type T */ T get(PK id); /** * Save changes made to a persistent object. * @param transientObject object to update **/ void update(T transientObject); /** * Remove the given object from persistent storage in the database. * @param persistentObject object to delete. **/ void delete(T persistentObject); /** * Remove the given object from persistent storage in the database. * @param s Query to execute * @return A query object **/ Query getQuery(String s); /** Deletes an object of a given Id. Will load the object internally so * consider using delete (T obj) directly. * @param id Id of record */ void delete(PK id); /** Delete object from disk. * @param persistentObject to delete * @param session to use * */ void delete(T persistentObject, Session session); /** Deletes an object of a given Id. Will load the object internally so consider using delete (T obj) directly. * @param id to delete * @param session to use */ void delete(PK id, Session session); /** * Loads the given Object. * @param id to load * @param session to use * @return an object of type T */ T load(PK id, Session session); /** * Loads the given Object. * @param id Id to load * @param session to use * @return An object of type T */ T get(PK id, Session session); /** Save object to disk using given session. * @param o to save * @param session to use * @return the id of the saved object * */ PK save(T o, Session session); /** Save or update given object. * @param o item to save. * @param session to use * */ void saveOrUpdate(T o, Session session); /** Update given object. * @param o item to update * @param session to use * */ void update(T o, Session session); /** Refreshes the object of type T. * @param persistentObject to refresh */ void refresh(T persistentObject); /** * Get a query handle. * @param s Query to use * @param session to use * @return Query object */ Query getQuery(String s, Session session); /** FindByExample. * @param exampleInstance to use * @param excludeProperty to exclude * @return A list of objects */ List<T> findByExample(T exampleInstance, String... excludeProperty); /** Returns a list of objects. * @return list of objects */ List<T> findAll(); /** Flushes the cache of the currently-used session. * */ void flush(); /** Object to evict from cache. * @param obj Object to evict */ void evict(Object obj); /** Hibernate wrapper. * @param criterion to filter. * @return list of objects */ List<T> findByCriteria(Criterion... criterion); }