J2EE-BaseDao.java

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);

}

發佈了159 篇原創文章 · 獲贊 16 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章