學習Spring-Data-Jpa(七)---JpaRepository


  之前我們學習的Repository都是Spring-Data為了兼容NoSQL而進行的一些抽象封裝,從JpaRepository開始是對關系型數據庫進行抽象封裝。JpaRepository位於spring-data-jpa項目下的repository包中,
繼承了PagingAndSortingRepository和QueryByExampleExecutor接口,因此也就擁它們的全部方法。並且將默認實現的查詢結果變成了List。並且新增了刷新更改到數據庫、保存並刷新、批量刪除等方法。使用方
法同之前的Repository一樣我們直接繼承它就好了,JpaRepository也是我們最常繼承的接口。

@NoRepositoryBean //不要生成該類的代理類
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {

    /*
     * 重寫父接口CrudRepository的方法,將查詢結果由Iterable變成List。
     */
    @Override
    List<T> findAll();

    /*
     * 重寫父接口PagingAndSortingRepository的方法,將查詢結果由Iterable變成List。
     */
    @Override
    List<T> findAll(Sort sort);

    /*
     *    重寫父接口CrudRepository的方法,將查詢結果由Iterable變成List。
     */
    @Override
    List<T> findAllById(Iterable<ID> ids);

    /*
     * 重寫父接口CrudRepository的方法,將查詢結果由Iterable變成List。
     */
    @Override
    <S extends T> List<S> saveAll(Iterable<S> entities);

    /**
     * 新增方法:刷新掛起的更改到數據庫。
     */
    void flush();

    /**
     * 新增方法:保存實體並立即刷新更改。
     */
    <S extends T> S saveAndFlush(S entity);

    /**
     * 新增方法:批量刪除給定實體。
     */
    void deleteInBatch(Iterable<T> entities);

    /**
     * 新增方法:批量刪除所有。
     */
    void deleteAllInBatch();

    /**
     * 返回對具有給定標識符的實體的引用。根據JPA提供商的實現方式,這很可能總是返回一個實例,
     * 並在第一次訪問時拋出javax.persistence.EntityNotFoundException。其中一些會立即拒絕無效的標識符。
     */
    T getOne(ID id);

    /*
     * 重寫父接口QueryByExampleExecutor的方法,將查詢結果由Iterable變成List。
     */
    @Override
    <S extends T> List<S> findAll(Example<S> example);

    /*
     * 重寫父接口QueryByExampleExecutor的方法,將查詢結果由Iterable變成List。
     */
    @Override
    <S extends T> List<S> findAll(Example<S> example, Sort sort);
}

 

源碼地址:https://github.com/caofanqi/study-spring-data-jpa


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM