[發(fā)明專利]提高JPA標準查詢編碼效率的方法有效
| 申請?zhí)枺?/td> | 202011386274.0 | 申請日: | 2020-12-01 |
| 公開(公告)號: | CN112433708B | 公開(公告)日: | 2021-12-21 |
| 發(fā)明(設計)人: | 孫瑞 | 申請(專利權(quán))人: | 四川長虹電器股份有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30;G06F8/20;G06F16/242 |
| 代理公司: | 四川省成都市天策商標專利事務所(有限合伙) 51213 | 代理人: | 張秀敏 |
| 地址: | 621000 四*** | 國省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 提高 jpa 標準 查詢 編碼 效率 方法 | ||
本發(fā)明公開了提高JPA標準查詢編碼效率的方法,包括:簡化SelectionT表達式的編碼;簡化where條件的編碼;根據(jù)查詢返回結(jié)果類型的不同封裝查詢類;再將查詢類實例化方法封裝到工廠方法類八中,統(tǒng)一查詢?nèi)肟冢喕a量;鏈式查詢類七觸發(fā)查詢動作時將緩存的查詢字段、查詢條件和查詢參等轉(zhuǎn)換成JPA標準查詢所需的參數(shù),執(zhí)行查詢并得到返回結(jié)果。本發(fā)明通過多層封裝字符串類型的查詢屬性,讓前幾步操作成為了具有緩存性質(zhì)的準備工作,將JPA標準查詢各步驟所需的屬性延遲在最后查詢時轉(zhuǎn)換生成,避免了前期各數(shù)據(jù)的交叉使用,方便地支持了鏈式編程的編碼方式,解決使用JPA標準查詢時代碼量繁多的問題。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機軟件技術(shù)領(lǐng)域,具體的說,是一種提高JPA標準查詢編碼效率的方法。
背景技術(shù)
JPA是JCP組織發(fā)布的Java EE標準之一,JPA的查詢語言是面向?qū)ο蠖敲嫦驍?shù)據(jù)庫的,它以面向?qū)ο蟮淖匀徽Z法構(gòu)造查詢語句。Hibernate對JPA的支持度相當高,且同時支持HQL/JPQL查詢和Criteria標準查詢兩種方式。HQL/JPQL采用類SQL的字符串語句查詢,拼接動態(tài)查詢條件時不僅不方便還容易引起SQL注入漏洞。標準查詢在動態(tài)查詢條件方面的支持是通過Predicate實現(xiàn)結(jié)構(gòu)化操作,使用起來更加嚴謹和方便,但其完全去SQL化也帶來了查詢編碼復雜度的提升,一次JPA標準查詢所涉及的代碼量很多,尤其在構(gòu)造查詢條件和選擇結(jié)果類型上不夠簡單直觀,為代碼的開發(fā)和維護帶來了額外的難度。根據(jù)Hibernate用戶手冊對JPA標準查詢的使用教程示例,一次簡單的標準查詢需要執(zhí)行5步:創(chuàng)建查詢、設置數(shù)據(jù)實體From源、設置要查詢的字段、設置查詢條件和其他限制、執(zhí)行查詢,至少需要4行代碼,當查詢結(jié)果為自定義的多個字段時,編碼行數(shù)將會更多,這對開發(fā)者編碼效率的影響十分明顯。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種提高JPA標準查詢編碼效率的方法,用于解決現(xiàn)有技術(shù)中JPA標準查詢時代碼量繁多和不易維護的問題。
本發(fā)明通過下述技術(shù)方案解決上述問題:
一種提高JPA標準查詢編碼效率的方法,對代碼進行簡化封裝,包括:
簡化SelectionT表達式的編碼,常用的查詢主要包含對字段的查詢和對聚合結(jié)果的查詢,需要直接查詢出來的字段可以基于PathX類的get(String attributeName)方法獲取到,而聚合類型的查詢結(jié)果(如count、sum、max等)則使用自定義的聚合類一對聚合類型(如count、sum、max等)和聚合屬性名稱(如name、age、gender、address等)進行封裝,這些純字符串表達式可以很容易地將其緩存起來;
簡化where條件的編碼:where條件需要ExpressionBoolean參數(shù),而ExpressionBoolean參數(shù)需要通過CriteriaBuilder和Expression?來生成。由于CriteriaBuilder類涵蓋了所有條件的生成方式(如equal、greaterThan、in、like等),且在第一步封裝中,我們已經(jīng)支持了傳純字符串的方式來獲得實體屬性對應的表達式Path,只需傳入Expression?參數(shù)和要滿足的條件值,將標準構(gòu)建程序CriteriaBuilder的條件生成方法封裝到自定義的條件類二中,條件類二記錄條件屬性的名稱、條件類型和條件值;再通過轉(zhuǎn)換類三實現(xiàn)從條件類二到ExpressionBoolean的轉(zhuǎn)換;以及對查詢屬性groupBy/having、orderBy和limit/offset進行字符串化地表達、封裝、緩存和轉(zhuǎn)換;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于四川長虹電器股份有限公司,未經(jīng)四川長虹電器股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011386274.0/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:天然纖維絲制取抽絲系統(tǒng)
- 下一篇:一種鋼化玻璃運輸車廂





