All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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