方昱傑 (Archie) .ical 中國信託銀行金融交易資訊部後端工程師 堅持「給予者」精神,積極推動團隊導入新技術和設計模式。專注系統穩定性,同時滿足業務多元需求,在技術鑽研與實務應用之間不斷追求最佳平衡 議程 年9月19日10:4045 分鐘Spring Boot × QueryDSL × GraphQL:打造彈性又安全的企業級動態查詢 API方昱傑 (Archie)為什麼企業查詢 API 需要「動態查詢」與「欄位權限」? 業務部門、資料分析師、IT 團隊的多元查詢需求 常見的查詢痛點:過度依賴多組固定 API、條件組合彈性差、欄位外洩風險 權限控管挑戰:不同角色、部門、系統間對資料存取的複雜規則技術選型與架構設計 為何選擇 QueryDSL?它在動態查詢、類型安全上的優勢 GraphQL 的彈性查詢與欄位裁切 (projection) 特性 結合 Spring Boot + QueryDSL + GraphQL 架構圖 傳統 REST API vs. GraphQL 查詢 API:維護與擴展性的比較QueryDSL 實作動態查詢的關鍵技巧 用 PredicateBuilder 動態組合條件 (AND/OR、IN、LIKE 等) 支援複雜查詢語意(區間、模糊、聯集、多表 Join) 怎麼保持查詢效能與易維護性 與 JPA、Spring Data 的整合經驗GraphQL 實現彈性查詢與欄位權限控管 Schema 設計:如何設計 Query/Mutation,支援動態欄位選擇 資料回傳欄位動態組裝 (Resolver) 權限驗證機制:自訂 Directive、Context、DataFetcher 層級的權限判斷 欄位敏感資料遮蔽、動態過濾(如只讓特定角色看見特定欄位)權限控管框架整合 權限資料來源設計(OAuth claim ) 權限檢查流程:Request > GraphQL Context > Data Fetcher/Resolver > Entity 欄位 實作細節與常見權限漏洞防範維運與效能考量 大量查詢下的效能優化(N+1 問題、分頁設計、批次查詢) 監控與稽核:如何記錄 API 查詢行為,方便事後稽核及追蹤402AB402AB