當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Data JPA 从入门到精通~JpaSpecificationExecutor实现原理
生活随笔
收集整理的這篇文章主要介紹了
Spring Data JPA 从入门到精通~JpaSpecificationExecutor实现原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JpaSpecificationExecutor 實現原理
我們還是先通過開發工具,把關鍵的類添加到Diagram上面進行分析,如圖:
我們通過上圖可以看一下,前面介紹的幾個類之間的關聯關系。
SimpleJpaRepository 實現類中的關鍵源碼如下:
/***以 findOne 為例 */ public T findOne(Specification<T> spec) {try {return getQuery(spec, (Sort) null).getSingleResult();} catch (NoResultException e) {return null;} } /** 解析 Specification,利用 EntityManager 直接實現調用邏輯。 */ protected <S extends T> TypedQuery<S> getQuery(Specification<S> spec, Class<S> domainClass, Sort sort) {CriteriaBuilder builder = em.getCriteriaBuilder();CriteriaQuery<S> query = builder.createQuery(domainClass);Root<S> root = applySpecificationToCriteria(spec, domainClass, query);query.select(root);if (sort != null) {query.orderBy(toOrders(sort, root, builder));}return applyRepositoryMethodMetadata(em.createQuery(query)); }其實我們可以看的出來底層都是調用的 EntityManager。
與 EntityManager 的關系圖
通過此圖可以體會一下 Repository 和 EntityManager 的關聯關系。
其實在實際項目中,我們的 Repository 可以擴展的更加優雅一點來解決后臺 API 的 search 問題和如何自定義 Respository?下一篇內容將會來講解這個問題。
總結
以上是生活随笔為你收集整理的Spring Data JPA 从入门到精通~JpaSpecificationExecutor实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Consolidate Duplicat
- 下一篇: Java并发编程实战~Guarded S