import java.io.Serializable;
import java.util.List;
import javax.persistence.LockModeType;
import Filter;
import Order;
import Page;
import Pageable;
/**
* Dao - 基類
*
* @author Sencloud Team
* @version 3.0
*/
public interface BaseDao<T, ID extends Serializable>
{
/**
* 查找實體對象
*
* @param id ID
* @return 實體對象,若不存在則返回null
*/
T find(ID id);
/**
* 查找實體對象
*
* @param id ID
* @param lockModeType 鎖定方式
* @return 實體對象,若不存在則返回null
*/
T find(ID id, LockModeType lockModeType);
/**
* 查找實體對象集合
*
* @param first 起始記錄
* @param count 數量
* @param filters 篩選
* @param orders 排序
* @return 實體對象集合
*/
List<T> findList(Integer first, Integer count, List<Filter> filters, List<Order> orders);
/**
* 查找實體對象分頁
*
* @param pageable 分頁信息
* @return 實體對象分頁
*/
Page<T> findPage(Pageable pageable);
/**
* 查詢實體對象數量
*
* @param filters 篩選
* @return 實體對象數量
*/
long count(Filter... filters);
/**
* 持久化實體對象
*
* @param entity 實體對象
*/
void persist(T entity);
/**
* 合併實體對象
*
* @param entity 實體對象
* @return 實體對象
*/
T merge(T entity);
/**
* 保存&更新實體對象
*
* @param entity 實體對象
* @return 實體對象
*/
T saveOrUpdate(T entity);
/**
* 移除實體對象
*
* @param entity 實體對象
*/
void remove(T entity);
/**
* 刷新實體對象
*
* @param entity 實體對象
*/
void refresh(T entity);
/**
* 刷新實體對象
*
* @param entity 實體對象
* @param lockModeType 鎖定方式
*/
void refresh(T entity, LockModeType lockModeType);
/**
* 獲取實體對象ID
*
* @param entity 實體對象
* @return 實體對象ID
*/
ID getIdentifier(T entity);
/**
* 判斷是否爲託管狀態
*
* @param entity 實體對象
* @return 是否爲託管狀態
*/
boolean isManaged(T entity);
/**
* 設置爲遊離狀態
*
* @param entity 實體對象
*/
void detach(T entity);
/**
* 鎖定實體對象
*
* @param entity 實體對象
* @param lockModeType 鎖定方式
*/
void lock(T entity, LockModeType lockModeType);
/**
* 清除緩存
*/
void clear();
/**
* 同步數據
*/
void flush();
/**<span style="white-space:pre"> </span>
* 批量更新
**/
void batchUpdate(List<T> list);
}
J2EE-BaseDao.java
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.