版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
一.前 U8cloud數(shù)據(jù)層特 二.JDBC 三.對象的持久 普通JavaBean的持久 四.常用的API的使 五.附 在U8cloud的開發(fā)中可以直接通過JDBC編程來數(shù)據(jù)庫JDBC可以說是JAVAJava程序代JDBC特定元素,使得項目難以。特別是當涉及到非常多的關系數(shù)據(jù)表、需要在多個不同類型的關系數(shù)據(jù)庫系統(tǒng)中使用時,通過在程序中使用JDBC開發(fā)實施起來更加。U8cloudJDBC開發(fā)了單獨的持久化層,把數(shù)據(jù)庫訪問操作封裝起來,提供簡潔的API,供業(yè)務層統(tǒng)一調(diào)用,實現(xiàn)了自己的ORM系統(tǒng)。通過U8cloud數(shù)據(jù)庫框架可以把內(nèi)存中的對象持久化到數(shù)據(jù)庫、把數(shù)據(jù)庫中的關系數(shù)據(jù)加載到內(nèi)存中,同時保證了系統(tǒng)頻繁地數(shù)據(jù)庫的性能,降低數(shù)據(jù)庫的頻率。U8cloud數(shù)據(jù)層特藏在數(shù)據(jù)層的內(nèi)部,所以是透明的。所以遷移僅僅涉及到修改數(shù)據(jù)層。因為數(shù)據(jù)層管理著所有的數(shù)據(jù)復雜性,所以它可以簡化業(yè)務對象和使用數(shù)據(jù)訪他端數(shù)據(jù),與的(如SQL語句。這樣給開發(fā)人員帶來了更高的效率、更好的可 性、提高了代碼的可讀性等一系列好處。易于和管把所有的數(shù)據(jù)集中在單獨的層上,由于所有的數(shù)據(jù)操作現(xiàn)在都委托給數(shù)據(jù)層, 。這種集中化可以使應用程序易于和管理。JDBCU8cloudSQL語句、連接管理、事務生命周期、數(shù)據(jù)框架可以解決與一個兼容JDBC的數(shù)據(jù)庫的重復交互問題。JdbcFramework特點利用JdbcSession執(zhí)行一個SQL,幾乎不需要代碼。你所需要的全部僅僅是一個數(shù)據(jù)源和一個JdbcSession。一旦你得到了它們,你將可以使用JdbcSession提供的大量方便的方法JdbcSession的創(chuàng)PersistenceManagerPersistenceManagersessionManager=PersistenceManager.getInstance();try{JdbcSessionsessionsessionManager.getJdbcSession;//jdbc會話}catch(DbExceptione)}finally}數(shù)據(jù)異常的處DbException是一個抽象異常類,它被用來處理SQLException和我們的數(shù)據(jù)異常之trytry}catch(DbExceptione)//tor())////to}finally}ResultProcessor實現(xiàn)返回不同的結(jié)果對象。系統(tǒng)提供了一系ArrayProcessor數(shù)組處理器,返回一個對象數(shù)組,結(jié)果集中只有一行數(shù)據(jù),其中結(jié)果ArrayListProcessor數(shù)組集合處理器,返回一個ArrayList集合,集合中的每一個元素MapProcessorHashMapHashMap,結(jié)果集中只有一行數(shù)據(jù),其中結(jié)果集合中每一列的列名和列值對應HashMap的一個關鍵字和相應的值。HashMapHashMap對應結(jié)果集中的一行數(shù)據(jù),其中結(jié)果集合中每一列的列名和列值對應HashMap的一個關鍵字和相應的值。BeanProcessorJavaBean,結(jié)果集中只有一行數(shù)據(jù),該處理那么只要該java對象中有getName()方法就能把結(jié)果集合中”name”對應的值映射到對象中。BeanProcessorArrayList集合,集合中的每一個元素是一個javaBean,每個javaBeanJavaBean中的數(shù)據(jù)映射關系和BeanProcess同理。JavaBean中的數(shù)據(jù)映射關系和BeanMapProcess同BeanMapProcessor:值對象處理器,根據(jù)映射信息返回一個JavaBean,結(jié)果集中只有一行數(shù)據(jù),該處理器能自動把結(jié)果集中的值按列的名稱映射到javaBean中,如結(jié)果集中publicclasspublicclassCustomProcessor BaseProcessorpublicObjectprocessResultSet(ResultSetrs)throwsSQLException……}更新的實無參數(shù)更新try{=='0001AA10000000000DDD'wherepk_invmandoc='0001AA10000000000DDD'}catch(DbExceptione)}{if(sessionManager!=null)}帶參數(shù)更新try{=='0001AA10000000000DDD'whereSQLParameterparameternewSQLParameter();構造參數(shù)對parameter.addParam("0001AA10000000000DDD");添加參數(shù),JdbcSession會將參數(shù)對象中的每個對象放入到預處理對象的相應位}catch(DbExceptione)}{if(sessionManager!=null)}批量帶參數(shù)更新try{ ='0001AA10000000000DDD'wherepk_invmandoc=?";SQLParameterparameter=newSQLParameter();session.addBatch(sql,parameter);introws=}}catch(DbExceptione)}{if(sessionManager!=null)}批量無參數(shù)try{ ='0001AA10000000000DDD'wherepk_invmandoc=’'0001AA10000000000DDD'’introws=}catch(DbExceptione)}{if(sessionManager!=null)} 使用Null參數(shù)類型try{SQLParameterparameter=newSQLParameter();session.addBatch(sql,parameter);introws=}catch(DbExceptione)}{if(sessionManager!=null)} try{SQLParameterparameter=newSQLParameter();session.addBatch(sql,parameter);introws=}catch(DbExceptione)}{if(sessionManager!=null)} try{SQLParameterparameter=newSQLParameter();session.addBatch(sql,parameter);introws=}catch(DbExceptione)}{if(sessionManager!=null)}數(shù)據(jù)加載到內(nèi)存中。作為的一個例子,我們使用一個簡單的JavaBean類(注意需要進行持久化的VO類必須符合JavaBean規(guī)范)JavaBean對象定//importsimplied….public//importsimplied….public privateintid;intage;publicintgetId{return}publicvoidsetId(int{this.id=}…}在定義了類以后,需要將類映射成數(shù)據(jù)表,需要注意的是目前的持久層對JavaBean和數(shù)據(jù)表之間的關系有一定限制,如一JavaBean只能映射成一個數(shù)據(jù)表。下面CREATECREATE(IDNUMBER(5,0)NOTNULL,IDNUMBER(5,0)NOTNULL,AGENUMBER(3,0)NOTNULL,PRIMARYKEY(ID))構造數(shù)據(jù)映射對publicinterfacepublicinterfaceMeta@return String*String String[] String[]} Javabean對應的數(shù)據(jù)庫表名稱、主鍵名稱、字段名稱,以及和數(shù)據(jù)庫字段一數(shù)據(jù)類VOMeta.javaimportimportpublic MetaprivateString[]attributes=newString[]{"id","name","age"};privateString[]columns=newString[]{"ID","NAME","AGE"};publicStringgetPrimaryKey(){return}{return }{return}publicString[]{return}}IUAPQueryBSIVOPersistencesuperDMO中的所有方法。建議新的代碼都使用BaseDAOdao=newBaseDAO()//使用默認的數(shù)據(jù)源對BaseDAOBaseDAOBaseDAOdao=newVOMetameta=new 對象寫B(tài)aseDAOBaseDAOdao=new VOMeta dao.insertObjectWithPK(對象更BaseDAOBaseDAOdao=new VOMetameta=new 對象刪BaseDAOBaseDAOdao=new VOMetameta=new dao.deleteObject( BaseDAOJavaBean的持久化(CRUD操作)BaseDAOJavaDocSuperVOSuperVOU8cloud系統(tǒng)中比較特殊的值對象,該值對象自身已經(jīng)包涵了值對象到數(shù)據(jù)SuperVO的持久化更為簡單方便,無需構造對象映射元數(shù)據(jù)類,可以直接對VO進行持久化操作。BaseDAOBaseDAOdao=newCollectionvos=dao.retrieveAllXXXSuperVO.class);//查詢數(shù)據(jù)表中所有數(shù)據(jù)到BaseDAOdao=newBaseDAO();BaseDAOdao=newBaseDAO();dao.updateVO(vo)BaseDAOdao=newBaseDAO();BaseDAOdao=newBaseDAO();dao.deleteVOBaseDAOdao=newBaseDAO();BaseDAOdao=newBaseDAO();dao.insertVO方法和功能請參考BaseDAO的JavaDoc用API的使務中復用接,需要最后在業(yè)務結(jié)束的時候手動的關閉連接,使用該類的優(yōu)點是在做復try{JdbcSessionsession=persistence.getJdbcSession();//數(shù)據(jù)調(diào)用1//數(shù)據(jù)庫調(diào)用3Objecto=Call}catch(DAOExceptionThrowsnewPersistence.}PersistenceManager包括supervo及objma的查詢和持久化,PersistenceManager具體提供的方法和功能請參考PersistenceManager的JavaDoc. SuperVO和普通JavaBean,對于通用持久化或泛化輯的持久化操作必須使用具體的名稱來完成業(yè)務方法的Service。IVOPersistence具體提供的方法和功能請參考IVOPersistence的JavaDoc.privateprivateIVOPersistencegetVOPersistence()throws {if(iVOPersistence==null)try{=}catch(ComponentExceptione) }return}IUAPQueryBS接SuperVO和其它任何含有映射原數(shù)據(jù)的javaBean的實現(xiàn)機制IUAPQueryBS具體提供的方法和功能請參考IUAPQueryBS的privateprivateIUAPQueryBSgetUAPQuery()throws {if(iIUAPQueryBS==null)try{ }catch(ComponentExc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高空廣告安裝塔吊吊車租賃及廣告制作合同3篇
- 加強知識產(chǎn)權保護工作報告
- 2025年度智能設備關鍵部件采購合同范本3篇
- 2024除塵設備工程承包合同
- 2024年行政合同中行政主體特權行使的程序要求
- 新疆職業(yè)大學《建筑學專業(yè)英語》2023-2024學年第一學期期末試卷
- 重慶機電職業(yè)技術大學《普通生物學》2023-2024學年第一學期期末試卷
- 2024高端設備制造與維修合同
- 2025年度人才公寓購置合同書示例3篇
- 寧波財經(jīng)學院《病原生物學》2023-2024學年第一學期期末試卷
- (T8聯(lián)考)2025屆高三部分重點中學12月第一次聯(lián)考評物理試卷(含答案詳解)
- 工程施工揚塵防治教育培訓
- 影視后期制作團隊薪酬激勵方案
- 污水管網(wǎng)技術標
- 2023年河南省公務員錄用考試《行測》真題及答案解析
- 《輸液港的護理》課件
- 新修訂反洗錢法律知識培訓課件
- 精彩的儲運部年終總結(jié)
- 山西省太原市重點中學2025屆物理高一第一學期期末統(tǒng)考試題含解析
- Python開發(fā)工程師招聘筆試題及解答(某大型國企)
- 2024年農(nóng)民職業(yè)農(nóng)業(yè)素質(zhì)技能考試題庫(附含答案)
評論
0/150
提交評論