亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

訪問數(shù)據(jù)庫的方法和裝置的制造方法_3

文檔序號(hào):9453103閱讀:來源:國(guó)知局
ppendWhere( "m2,pkid= :pkid","pkid",pkid);
[0073]hqlbuild.append("andm2,foreginld=m3,pkid");
[0074] ......
[0075] appendWhere方法首先判斷val是否為空,不為空就追加子hql語句,并設(shè)置V0參 數(shù)到parameters中,如果為空,針對(duì)delete操作和update操作,需要將paramKey對(duì)應(yīng)的 參數(shù)替換為"isnull",具體流程如圖8所示,圖8是根據(jù)本發(fā)明實(shí)施方式的追加字符串和 參數(shù)的方法的具體流程圖。
[0076] setParameter方法和fillQuery方法是私有方法,前者將V0中的參數(shù)包裝成 map ;fillQuery方法根據(jù)拼裝好的hql語句創(chuàng)建query對(duì)象,并通過parameters替換hql 中的參數(shù),最后返回query對(duì)象執(zhí)行數(shù)據(jù)庫操作。
[0077] 如果業(yè)務(wù)層傳入的是V0,持久層首先獲得HQLUtil實(shí)例,并根據(jù)類對(duì)象獲得字段 名稱,然后遍歷V0進(jìn)行hql拼裝,以及替換hql中的參數(shù),最后執(zhí)行數(shù)據(jù)庫操作,流程圖如 圖9所示,圖9是基于本發(fā)明實(shí)施方式中的H QL拼裝工具類處理值對(duì)象的具體流程的示意 圖。
[0078] 以下對(duì)于本發(fā)明實(shí)施方式中的抽象服務(wù)層接口加以說明。在本發(fā)明的實(shí) 施方式中,構(gòu)建一個(gè)服務(wù)層的頂層父類接口Service;需要訪問持久層的父類接口是 RepositoryService,任何需要訪問持久層的業(yè)務(wù)類都需要實(shí)現(xiàn)該接口,對(duì)于不訪問持久層 的服務(wù)則不需要。該接口通過SpringI0C將IRepository進(jìn)行注入。類圖如圖10所示, 圖10是根據(jù)本發(fā)明實(shí)施方式的關(guān)于服務(wù)層接口的類圖。
[0079] 圖11是根據(jù)本發(fā)明實(shí)施方式的訪問數(shù)據(jù)庫的裝置的主要模塊的示意圖。如圖 11所示,持久層作為一種訪問數(shù)據(jù)庫的裝置110,其主要包括接收模塊111、獲取填充模塊 112、轉(zhuǎn)換模塊113、保存模塊114。
[0080] 接收模塊111用于接收持久層的公共接口類的類對(duì)象和值映射表;所述類對(duì)象是 將持久層抽象為一個(gè)公共接口類而得到的類對(duì)象;獲取填充模塊112用于根據(jù)所述類對(duì)象 獲取值對(duì)象,并且根據(jù)所述值映射表和所述類對(duì)象,對(duì)該值對(duì)象進(jìn)行父實(shí)體的填充;轉(zhuǎn)換模 塊113用于將完成所述填充的值對(duì)象轉(zhuǎn)換為持久對(duì)象;保存模塊114用于將所述持久對(duì)象 中的數(shù)據(jù)保存到數(shù)據(jù)庫中。
[0081 ] 訪問數(shù)據(jù)庫的裝置110還可以包括獲取模塊和檢查填充模塊(圖中未示出),其中 獲取模塊,用于通過會(huì)話工廠獲取所述類對(duì)象的元數(shù)據(jù)信息;檢查填充模塊,用于檢查所述 類對(duì)象每個(gè)字段的類型,在檢查到的當(dāng)前字段的類型為實(shí)體類型的情況下,根據(jù)所述值映 射表中的映射關(guān)系和外鍵查找到該當(dāng)前字段對(duì)應(yīng)的實(shí)體,然后將該實(shí)體填充到所述值對(duì)象 中。
[0082] 訪問數(shù)據(jù)庫的裝置110還可以包括填充模塊、查找模塊、拼裝模塊、以及更新操 作模塊(圖中未示出),其中填充模塊用于根據(jù)所述接收模塊接收到的用于更新數(shù)據(jù)庫 的值映射表和類對(duì)象,對(duì)值對(duì)象進(jìn)行父實(shí)體的填充;查找模塊用于查找所述類對(duì)象的元 數(shù)據(jù)信息以獲得字段名稱;拼裝模塊用于采用HQLBulider工具類,按照所述值映射表拼 裝出HQL語句;更新操作模塊用于根據(jù)所述HQL語句生成Query對(duì)象,然后使用query. setParameter工具設(shè)置所述HQL語句的參數(shù),再執(zhí)行所述HQL語句以更新所述數(shù)據(jù)庫。
[0083] 訪問數(shù)據(jù)庫的裝置110還可包括查詢輸出模塊(圖中未示出),用于使用Query對(duì) 象的list方法獲取數(shù)據(jù)庫中的數(shù)據(jù),將該數(shù)據(jù)通過值映射表和值表進(jìn)行包裝然后輸出。
[0084] 本發(fā)明的有益效果如下:
[0085] 通過對(duì)Hibernate的封裝,將持久層隱藏,開發(fā)人員只需關(guān)注業(yè)務(wù)邏輯,不用考慮 持久層開發(fā),也不需要進(jìn)行重復(fù)的代碼拷貝,大大提高了開發(fā)效率。同時(shí)也保留了框架的原 生接口訪問,為系統(tǒng)的擴(kuò)展提供了更多的可能。
[0086] 通過對(duì)P0,V0的封裝,將二者的轉(zhuǎn)化過程由框架實(shí)現(xiàn),減少了開發(fā)人員的工作量, 也減少了內(nèi)存開銷,提高了系統(tǒng)的性能。
[0087] 持久層向上層只暴露一個(gè)接口,在應(yīng)用中只有一個(gè)工廠實(shí)例,降低了層次之間的 耦合,大大提高了系統(tǒng)的擴(kuò)展性和彈性。
[0088] 所有數(shù)據(jù)庫操作都是通過HQL來完成,一方面可以兼容多數(shù)據(jù)庫,另一方面保證 了系統(tǒng)的規(guī)范性,同時(shí)也提供了SQL語句的訪問接口,方便系統(tǒng)后續(xù)的擴(kuò)展和維護(hù)。
[0089] 上述【具體實(shí)施方式】,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明 白的是,取決于設(shè)計(jì)要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何 在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍 之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種訪問數(shù)據(jù)庫的方法,其特征在于,包括: 接收持久層的公共接口類的類對(duì)象和值映射表;所述類對(duì)象是將持久層抽象為一個(gè)公 共接口類而得到的類對(duì)象; 根據(jù)所述類對(duì)象獲取值對(duì)象,并且根據(jù)所述值映射表和所述類對(duì)象,對(duì)該值對(duì)象進(jìn)行 父實(shí)體的填充; 將完成所述填充的值對(duì)象轉(zhuǎn)換為持久對(duì)象; 將所述持久對(duì)象中的數(shù)據(jù)保存到數(shù)據(jù)庫中。2. 根據(jù)權(quán)利要求1所述的訪問數(shù)據(jù)庫的方法,其特征在于,將完成所述填充的值對(duì)象 轉(zhuǎn)換為持久對(duì)象的步驟包括:對(duì)于完成所述填充的值對(duì)象,采用BeanUtils工具將其轉(zhuǎn)換 為持久對(duì)象。3.根據(jù)權(quán)利要求1或2所述的訪問數(shù)據(jù)庫的方法,其特征在于,所述進(jìn)行父實(shí)體的填充 的步驟包括: 通過會(huì)話工廠獲取所述類對(duì)象的元數(shù)據(jù)信息; 檢查所述類對(duì)象每個(gè)字段的類型,在檢查到的當(dāng)前字段的類型為實(shí)體類型的情況下, 根據(jù)所述值映射表中的映射關(guān)系和外鍵查找到該當(dāng)前字段對(duì)應(yīng)的實(shí)體,然后將該實(shí)體填充 到所述值對(duì)象中。4.根據(jù)權(quán)利要求1所述的訪問數(shù)據(jù)庫的方法,其特征在于,在需要進(jìn)行數(shù)據(jù)庫更新操 作的情況下,該方法還包括: 接收持久層的公共接口類的類對(duì)象和值映射表; 根據(jù)所述值映射表和所述類對(duì)象對(duì)值對(duì)象進(jìn)行父實(shí)體的填充; 查找所述類對(duì)象的元數(shù)據(jù)信息以獲得字段名稱; 采用HQLBulider工具類,按照所述值映射表拼裝出HQL語句; 根據(jù)所述HQL語句生成Query對(duì)象,然后使用query. setParameter工具設(shè)置所述HQL 語句的參數(shù),再執(zhí)行所述HQL語句以更新所述數(shù)據(jù)庫。5.根據(jù)權(quán)利要求1所述的訪問數(shù)據(jù)庫的方法,其特征在于,在需要進(jìn)行數(shù)據(jù)庫查詢操 作的情況下,該方法還包括: 使用Query對(duì)象的list方法獲取數(shù)據(jù)庫中的數(shù)據(jù),將該數(shù)據(jù)通過值映射表和值表進(jìn)行 包裝然后輸出。6. -種訪問數(shù)據(jù)庫的裝置,其特征在于,包括: 接收模塊,用于接收持久層的公共接口類的類對(duì)象和值映射表;所述類對(duì)象是將持久 層抽象為一個(gè)公共接口類而得到的類對(duì)象; 獲取填充模塊,用于根據(jù)所述類對(duì)象獲取值對(duì)象,并且根據(jù)所述值映射表和所述類對(duì) 象,對(duì)該值對(duì)象進(jìn)行父實(shí)體的填充; 轉(zhuǎn)換模塊,用于將完成所述填充的值對(duì)象轉(zhuǎn)換為持久對(duì)象; 保存模塊,用于將所述持久對(duì)象中的數(shù)據(jù)保存到數(shù)據(jù)庫中。7.根據(jù)權(quán)利要求6所述的訪問數(shù)據(jù)庫的裝置,其特征在于,所述轉(zhuǎn)換模塊還用于對(duì)于 完成所述填充的值對(duì)象,采用BeanUtils工具將其轉(zhuǎn)換為持久對(duì)象。8. 根據(jù)權(quán)利要求6或7所述的訪問數(shù)據(jù)庫的裝置,其特征在于,還包括: 獲取模塊,用于通過會(huì)話工廠獲取所述類對(duì)象的元數(shù)據(jù)信息; 檢查填充模塊,用于檢查所述類對(duì)象每個(gè)字段的類型,在檢查到的當(dāng)前字段的類型為 實(shí)體類型的情況下,根據(jù)所述值映射表中的映射關(guān)系和外鍵查找到該當(dāng)前字段對(duì)應(yīng)的實(shí) 體,然后將該實(shí)體填充到所述值對(duì)象中。9. 根據(jù)權(quán)利要求6所述的訪問數(shù)據(jù)庫的裝置,其特征在于,還包括: 填充模塊,用于根據(jù)所述接收模塊接收到的用于更新數(shù)據(jù)庫的值映射表和類對(duì)象,對(duì) 值對(duì)象進(jìn)行父實(shí)體的填充; 查找模塊,用于查找所述類對(duì)象的元數(shù)據(jù)信息以獲得字段名稱; 拼裝模塊,用于采用HQLBulider工具類,按照所述值映射表拼裝出HQL語句; 更新操作模塊,用于根據(jù)所述HQL語句生成Query對(duì)象,然后使用query.setParameter工具設(shè)置所述HQL語句的參數(shù),再執(zhí)行所述HQL語句以更新所述數(shù)據(jù)庫。10. 根據(jù)權(quán)利要求6所述的訪問數(shù)據(jù)庫的裝置,其特征在于,還包括查詢輸出模塊,用 于使用Query對(duì)象的list方法獲取數(shù)據(jù)庫中的數(shù)據(jù),將該數(shù)據(jù)通過值映射表和值表進(jìn)行包 裝然后輸出。
【專利摘要】本發(fā)明提供一種訪問數(shù)據(jù)庫的方法和裝置,有助于提高系統(tǒng)性能和開發(fā)效率,另外有助于解決接口規(guī)范性問題。本發(fā)明的訪問數(shù)據(jù)庫的方法包括:接收持久層的公共接口類的類對(duì)象和值映射表;所述類對(duì)象是將持久層抽象為一個(gè)公共接口類而得到的類對(duì)象;根據(jù)所述類對(duì)象獲取值對(duì)象,并且根據(jù)所述值映射表和所述類對(duì)象,對(duì)該值對(duì)象進(jìn)行父實(shí)體的填充;將完成所述填充的值對(duì)象轉(zhuǎn)換為持久對(duì)象;將所述持久對(duì)象中的數(shù)據(jù)保存到數(shù)據(jù)庫中。
【IPC分類】G06F17/30
【公開號(hào)】CN105205103
【申請(qǐng)?zhí)枴緾N201510528428
【發(fā)明人】李慧巖
【申請(qǐng)人】北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司
【公開日】2015年12月30日
【申請(qǐng)日】2015年8月25日
當(dāng)前第3頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1