package org.jpwh.web.dao; import javax.persistence.EntityManager; import javax.persistence.LockModeType; import java.io.Serializable; import java.util.List; /** * An interface shared by all business data access objects. *

* All CRUD (create, read, update, delete) basic data access operations are * isolated in this interface and shared across all DAO implementations. * The current design is for a state-management oriented persistence layer * (for example, there is no UPDATE statement function) which provides * automatic transactional dirty checking of business objects in persistent * state. */ public interface GenericDAO extends Serializable { void joinTransaction(); T findById(ID id); T findById(ID id, LockModeType lockModeType); T findReferenceById(ID id); List findAll(); Long getCount(); T makePersistent(T entity); void makeTransient(T entity); void checkVersion(T entity, boolean forceUpdate); }