SwiftDAO - 基于Hibernate框架的泛型DAO層

jopen 11年前發布 | 18K 次閱讀 DAO 持久層框架

SwiftDAO是一個輕量級的,基于Hibernate框架的泛型DAO層。如果您使用Hibernate和Spring 框架做開發,想要快速為項目添加DAO層但又不想在這上面花太多時間,那么SwiftDAO實現了常見的CRUD操作,利用它可以省去很多簡單重復代碼的編寫。使用SwiftDAO必須對Hibernate和Spring框架相當熟悉并且理解數據庫基本概念。 
以下為SwiftDAO已經實現的CRUD方法集:

        // 持久化一個實體。
        void create(E entity) throws DataAccessException;

    // 持久化多個實體。
    void create(Collection<E> entities) throws DataAccessException;

    // 持久化或者更新實體。
    void createOrUpdate(E entity) throws DataAccessException;

    // 持久化或者更新多個實體。
    void createOrUpdate(Collection<E> entities) throws DataAccessException;

    // 更新實體。
    void update(E entity) throws DataAccessException;

    // 更新多個實體。
    void update(Collection<E> entities) throws DataAccessException;

    // 更新處于游離狀態的實體,更新后實體對象仍然處于游離狀態。
    void merge(E entity) throws DataAccessException;

    // 保存處于游離狀態的多個實體,更新后實體對象仍然處于游離狀態。
    void merge(Collection<E> entities) throws DataAccessException;

    // 刪除一個持久化的實體。
    void delete(E entity) throws DataAccessException;

    // 刪除多個持久化的實體。
    void delete(Collection<E> entities) throws DataAccessException;

    // 刪除實體主鍵id標識的實體。
    void delete(long id) throws DataAccessException;

    // 通過復合主鍵類的實例來刪除實體對象。
    void delete(Serializable key) throws DataAccessException;

    // 通過給定復合主鍵的各個屬性值來刪除實體對象。
    void delete(String[] keyNames, Object[] keyValues) throws DataAccessException;

    // 按照實體類型和實體唯一標識查詢實體。
    E find(long id) throws DataAccessException;

    // 按照實體類型和實體唯一標識查詢實體。
    E find(Serializable id) throws DataAccessException;

    // 通過給定復合主鍵的各個屬性值來查找實體對象。
    E find(String[] keyNames, Object[] keyValues) throws DataAccessException;

    // 按照實體類型和實體唯一標識查詢實體,并鎖定該實體對象,直到事務結束。
    E findAndLock(long id) throws DataAccessException;

    // 按照實體類型和實體唯一標識查詢實體,并鎖定該實體對象,直到事務結束。
    E findAndLock(Serializable id) throws DataAccessException;

    // 按照給定的實體類型和唯一標識查詢實體。通用的查詢方法,適用于所有的實現KeyedPersistable接口的實體類。
    KeyedPersistable find(Class clazz, long id) throws DataAccessException;

    // 按照給定的實體類型和唯一標識查詢實體。通用的查詢方法,適用于所有的實現KeyedPersistable接口的實體類。
    KeyedPersistable find(Class clazz, Serializable id) throws DataAccessException;

    // 按照唯一的(Unique)屬性名和屬性值,查詢得到一個實體對象。
    E findByUniqueParam(String uniqueParamName, String value) throws DataAccessException;

    // 按照指定的屬性值查詢多個實體對象。
    List<E> findByParam(String paramName, Object value) throws DataAccessException;

    // 按照指定屬性值查找多個實例,并按照分頁條件分頁,返回指定頁的實體集合。
    List<E> findByParamPagination(String paramName, Object value, int pageSize, int pageNumber) throws DataAccessException;

    // 按照指定屬性值、排序條件和分頁條件進行查找指定頁的多個實例。
    List<E> findByParamPagination(String paramName, Object value, String orderParam,
                    boolean isDescending, int pageSize, int pageNumber) throws DataAccessException;

    // 按照指定的屬性值映射查找多個實體對象。
    List<E> findByParams(Map<String, Object> paramMap) throws DataAccessException;

    // 按照指定的條件表達式查找多個實體對象。
    List<E> findByParams(String extraCondition, Map<String, Object> extraParams) throws DataAccessException;

    // 按照指定的屬性值映射查找多個實體對象。
    List<E> findByParams(Map<String, Object> paramMap, String extraCondition, Map<String, Object> extraParams) throws DataAccessException;

    // 按照指定屬性值映射、分頁條件查找多個實例。
    List<E> findByParamsPagination(Map<String, Object> paramMap, int pageSize, int pageNumber) throws DataAccessException;

    // 按照指定屬性值映射查找多個實例,并按照分頁條件分頁,返回指定頁的實體列表。
    List<E> findByParamsPagination(String condition, Map<String, Object> params, int pageSize, int pageNumber) throws DataAccessException;

    // 按照指定屬性值映射查找多個實例,并按照分頁條件分頁,返回指定頁的實體列表。
    List<E> findByParamsPagination(Map<String, Object> paramMap, String extraCondition,
                    Map<String, Object> extraParams, int pageSize, int pageNumber) throws DataAccessException;

    // 按照指定屬性值映射、排序條件和分頁條件進行查找指定頁的多個實例。
    List<E> findByParamsPagination(Map<String, Object> paramMap, String orderParam, boolean isDescending,
                    int pageSize, int pageNumber) throws DataAccessException;

    // 按照指定參數值映射和額外的查詢條件、排序條件和分頁條件查找多個實例。
    List<E> findByParamsPagination(Map<String, Object> paramMap, String extraCondition,
                    Map<String, Object> extraParams, String orderParam, boolean isDescending,
                    int pageSize, int pageNumber) throws DataAccessException;

    // 按照泛型的實體類型查詢得到所有持久化實體。
    // 如果實體類被設置為緩存的,則該方法首先從緩存中獲取。
    List<E> findAll() throws DataAccessException;

    // 按照指定實體類型查詢得到所有持久化實體。
    // 如果實體類被設置為緩存的,則該方法首先從緩存中獲取。
    List<E> findAll(Class clazz) throws DataAccessException;

    // 忽略實體類的緩存配置,直接查詢所有持久化實體。
    List<E> findAllOverCache(Class clazz) throws DataAccessException;

    // 在所有的持久化實體中查詢指定頁的實體集合。
    List<E> findAllByPagination(int pageSize, int pageNumber) throws DataAccessException;

    // 在所有的持久化實體中按照排序方式查詢指定頁的實體集合。
    List<E> findAllByPagination(String orderParam, boolean isDescending, int pageSize, int pageNumber) throws DataAccessException;

    // 統計所有持久化實體對象的數量。
    long countAll() throws DataAccessException;

    // 按條件統計持久化實體對象的數量。
    long countByParam(String paramName, Object value) throws DataAccessException;

    // 按給定的限制條件統計持久化實體對象的數量。
    long countByParams(Map<String, Object> paramMap) throws DataAccessException;

    // 按給定的限制條件統計實體對象的數量。
    long countByParams(Map<String, Object> paramMap, String extraCondition, Map<String, Object> extraParams) throws DataAccessException;

    // 獲得指定Sequence的值(僅用于Oracle)
    long getSequence(String seqName) throws DataAccessException;</pre><br />

項目主頁:http://www.baiduhome.net/lib/view/home/1357830942230

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!