JCConf 2025

Spring Boot × QueryDSL × GraphQL:打造彈性又安全的企業級動態查詢 API
2025年9月19日 , 402AB

  1. 為什麼企業查詢 API 需要「動態查詢」與「欄位權限」?
    業務部門、資料分析師、IT 團隊的多元查詢需求
    常見的查詢痛點:過度依賴多組固定 API、條件組合彈性差、欄位外洩風險
    權限控管挑戰:不同角色、部門、系統間對資料存取的複雜規則

  2. 技術選型與架構設計
    為何選擇 QueryDSL?它在動態查詢、類型安全上的優勢
    GraphQL 的彈性查詢與欄位裁切 (projection) 特性
    結合 Spring Boot + QueryDSL + GraphQL 架構圖
    傳統 REST API vs. GraphQL 查詢 API:維護與擴展性的比較

  3. QueryDSL 實作動態查詢的關鍵技巧
    用 PredicateBuilder 動態組合條件 (AND/OR、IN、LIKE 等)
    支援複雜查詢語意(區間、模糊、聯集、多表 Join)
    怎麼保持查詢效能與易維護性
    與 JPA、Spring Data 的整合經驗

  4. GraphQL 實現彈性查詢與欄位權限控管
    Schema 設計:如何設計 Query/Mutation,支援動態欄位選擇
    資料回傳欄位動態組裝 (Resolver)
    權限驗證機制:自訂 Directive、Context、DataFetcher 層級的權限判斷
    欄位敏感資料遮蔽、動態過濾(如只讓特定角色看見特定欄位)

  5. 權限控管框架整合
    權限資料來源設計(OAuth claim )
    權限檢查流程:Request > GraphQL Context > Data Fetcher/Resolver > Entity 欄位
    實作細節與常見權限漏洞防範

  6. 維運與效能考量
    大量查詢下的效能優化(N+1 問題、分頁設計、批次查詢)
    監控與稽核:如何記錄 API 查詢行為,方便事後稽核及追蹤

中國信託銀行金融交易資訊處後端工程師
堅持「給予者」精神,積極推動團隊導入新技術和設計模式。專注系統穩定性,同時滿足業務多元需求,在技術鑽研與實務應用之間不斷追求最佳平衡