国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

JDO架構(gòu)介紹

2019-11-18 16:22:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
                                     jdo架構(gòu)簡(jiǎn)介

jdohelper :
javax.jdo.JDOHelper類擁有一個(gè)靜態(tài)的助手(helper)方法。這個(gè)方法可以獲得一個(gè)持久對(duì)象的生命周期還可以用來(lái)創(chuàng)建一個(gè)與具體實(shí)現(xiàn)廠商無(wú)關(guān)的PersistenceManagerFactory的實(shí)例。
persistencemanagerfactory:javax.jdo.PersistenceManagerFactory類可以通過(guò)JDOHelper類的助手方法獲得,這是一個(gè)標(biāo)準(zhǔn)的工廠類,他可以創(chuàng)建PersistenceManager類。
persistencemanager:
javax.jdo.PersistenceManager接口是應(yīng)用程序經(jīng)常要使用的一個(gè)主要的JDO接口。每一個(gè)PersistenceManager負(fù)責(zé)控制一組持久化對(duì)象而且他還可以創(chuàng)建新的持久化對(duì)象或刪除現(xiàn)有的持久化對(duì)象。Transaction和PersistenceManager之間存在這一對(duì)一的關(guān)系,同時(shí)PersistenceManager又是Extent和Query的工廠類,也就是說(shuō)這兩個(gè)對(duì)象可以通過(guò)PersistenceManager創(chuàng)建。
persistencecapable:
用戶定義的持久化類都必須擴(kuò)展實(shí)現(xiàn)PersistenceCapable接口。大多數(shù)JDO實(shí)現(xiàn)的供應(yīng)商都提供一種“增強(qiáng)器”(enhancer)的功能,它可以向你要實(shí)現(xiàn)的持久化類中增加PersistenceCapable接口的實(shí)現(xiàn)。也就是說(shuō),其實(shí)你根本不會(huì)自己去實(shí)現(xiàn)這個(gè)接口。
transaction:
每一個(gè)PersistemceManager和javax.jdo.Transaction都是一一對(duì)應(yīng)的。Transactions用來(lái)處理事務(wù),它使得持久化數(shù)據(jù)可以成批的一次性添加到數(shù)據(jù)表中,如果出現(xiàn)異常就將數(shù)據(jù)回滾。
extent:
java.jdo.Extent是映射數(shù)據(jù)庫(kù)中具體表的類的一個(gè)邏輯視圖。Extent可以擁有自己的子類,它通過(guò)PersistenceManager獲得。
query:
java.jdo.Query接口用具體的廠商JDO來(lái)實(shí)現(xiàn),它負(fù)責(zé)處理JDO查詢語(yǔ)言(JDOQL),這些JDOQL最終被解釋為實(shí)際的數(shù)據(jù)庫(kù)SQL語(yǔ)言。同樣這個(gè)接口也是通過(guò)PersistenceManager獲得的。
下面的例子顯示的JDO接口如何操作并執(zhí)行一個(gè)查詢并更新持久化對(duì)象。

例子:JDO接口的交互
//通過(guò)助手類獲得PersistenceManagerFactory
    PersistenceManagerFactory factory=
        JDOHelper.getPersistenceManagerFactory(System.getPRoperties());
   //通過(guò)PersistenceManagerFactory獲得PersistenceManager對(duì)象
   PersistenceManager pm=factory.getPersistenceManager();
    //創(chuàng)建并開(kāi)始一個(gè)事務(wù)    Transaction tx=pm.currentTransaction();
    tx.begin();
   //查詢employee表中每周工作時(shí)間大于40小時(shí)的研究人員
   Extent ex=pm.getExtent(Employee.class,false);
   //獲得一個(gè)Query    Query query=pm.newQuery();
   //設(shè)置這個(gè)query作用的范圍,即查詢的是那個(gè)表或記錄集
   query.setCandidates(ex);
    query.setFilter("division.name == /"Research/" "+ "&& avgHours > 40");
    Collection result=(Collection)query.execute();
    Employee emp;
    for(Iterator itr=result.iterator();itr.hasNext();){
      emp=(Employee)itr.next();
      emp.setSalary(emp.getSalary()*2);
    }    
//提交記錄釋放資源
    tx.commit();
    pm.close();
factory.close();

上面的代碼片斷包括了JDO幾個(gè)主要的接口,在此你可以對(duì)JDO各個(gè)接口的使用方法有一個(gè)粗略的印象,以后實(shí)際的應(yīng)用中JDO接口也都是這樣使用的。

jdo的異常
JDO不會(huì)拋出通常的運(yùn)行時(shí)異常,比如NullPointerExceptions、 IllegalArgumentException等它只拋出JDOException異常。JDOExcetion的結(jié)構(gòu)如下圖所示,這是一個(gè)繼承的層次結(jié)構(gòu),從他們的字面含義就可以看出它們的用途,在這里就不詳細(xì)說(shuō)了,要想了解JDO異常的層次結(jié)構(gòu)可以參考它們的JavaDoc。進(jìn)入討論組討論。

(出處:http://m.survivalescaperooms.com)



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泰州市| 泰兴市| 洪洞县| 博野县| 丰顺县| 昆明市| 远安县| 辽阳市| 南溪县| 马龙县| 水富县| 察雅县| 通道| 噶尔县| 简阳市| 丘北县| 乌鲁木齐市| 南华县| 玉门市| 新竹市| 中宁县| 若尔盖县| 尚义县| 靖江市| 曲松县| 江达县| 长武县| 麟游县| 炉霍县| 阳东县| 永吉县| 临汾市| 彰武县| 陕西省| 邹城市| 潼南县| 如东县| 九龙坡区| 抚顺县| 乐平市| 嵊泗县|