
com.github.wwadge.hbnpojogen.persistence.GenericDAO Maven / Gradle / Ivy
The newest version!
package com.github.wwadge.hbnpojogen.persistence;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import java.io.Serializable;
import java.util.List;
/**
* Generic DAO class.
*
* @param
* @param
* @author lincolns, wallacew
*/
public interface GenericDAO {
/**
* 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 findByExample(T exampleInstance, String... excludeProperty);
/**
* Returns a list of objects.
*
* @return list of objects
*/
List 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 findByCriteria(Criterion... criterion);
/**
* Return the currently set class.
*
* @return the currently set class.
*/
Class getPersistentClass();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy