<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
    摘要:



    轉(zhuǎn)載:轉(zhuǎn)載請保留本信息,本文來自http://www.matrix.org.cn/resource/article/0/740.html
    JDO架構(gòu)簡介
    下圖顯示了JDO架構(gòu)主要的幾部分內(nèi)容:
    image
    JDOHelper :
    javax.jdo.JDOHelper類擁有一個靜態(tài)的助手(helper)方法。這個方法可以獲得一個持久對象的生命周期還可以用來創(chuàng)建一個與具體實現(xiàn)廠商無關(guān)的PersistenceManagerFactory的實例。
    PersistenceManagerFactory:javax.jdo.PersistenceManagerFactory類可以通過JDOHelper類的助手方法獲得,這是一個標準的工廠類,他可以創(chuàng)建PersistenceManager類。
    PersistenceManager:
    javax.jdo.PersistenceManager接口是應(yīng)用程序經(jīng)常要使用的一個主要的JDO接口。每一個PersistenceManager負責控制一組持久化對象而且他還可以創(chuàng)建新的持久化對象或刪除現(xiàn)有的持久化對象。Transaction和PersistenceManager之間存在這一對一的關(guān)系,同時PersistenceManager又是Extent和Query的工廠類,也就是說這兩個對象可以通過PersistenceManager創(chuàng)建。
    PersistenceCapable:
    用戶定義的持久化類都必須擴展實現(xiàn)PersistenceCapable接口。大多數(shù)JDO實現(xiàn)的供應(yīng)商都提供一種“增強器”(enhancer)的功能,它可以向你要實現(xiàn)的持久化類中增加PersistenceCapable接口的實現(xiàn)。也就是說,其實你根本不會自己去實現(xiàn)這個接口。
    Transaction:
    每一個PersistemceManager和javax.jdo.Transaction都是一一對應(yīng)的。Transactions用來處理事務(wù),它使得持久化數(shù)據(jù)可以成批的一次性添加到數(shù)據(jù)表中,如果出現(xiàn)異常就將數(shù)據(jù)回滾。
    Extent:
    java.jdo.Extent是映射數(shù)據(jù)庫中具體表的類的一個邏輯視圖。Extent可以擁有自己的子類,它通過PersistenceManager獲得。
    Query:
    java.jdo.Query接口用具體的廠商JDO來實現(xiàn),它負責處理JDO查詢語言(JDOQL),這些JDOQL最終被解釋為實際的數(shù)據(jù)庫SQL語言。同樣這個接口也是通過PersistenceManager獲得的。
    下面的例子顯示的JDO接口如何操作并執(zhí)行一個查詢并更新持久化對象。

    例子:JDO接口的交互
    //通過助手類獲得PersistenceManagerFactory
    PersistenceManagerFactory factory=
    JDOHelper.getPersistenceManagerFactory(System.getProperties());

    //通過PersistenceManagerFactory獲得PersistenceManager對象
    PersistenceManager pm=factory.getPersistenceManager();
    //創(chuàng)建并開始一個事務(wù) Transaction tx=pm.currentTransaction();
    tx.begin();

    //查詢employee表中每周工作時間大于40小時的研究人員
    Extent ex=pm.getExtent(Employee.class,false);
    //獲得一個Query Query query=pm.newQuery();
    //設(shè)置這個query作用的范圍,即查詢的是那個表或記錄集
    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幾個主要的接口,在此你可以對JDO各個接口的使用方法有一個粗略的印象,以后實際的應(yīng)用中JDO接口也都是這樣使用的。

    JDO的異常
    JDO不會拋出通常的運行時異常,比如NullPointerExceptions、 IllegalArgumentException等它只拋出JDOException異常。JDOExcetion的結(jié)構(gòu)如下圖所示,這是一個繼承的層次結(jié)構(gòu),從他們的字面含義就可以看出它們的用途,在這里就不詳細說了,要想了解JDO異常的層次結(jié)構(gòu)可以參考它們的JavaDoc。

    image

    posted on 2006-12-11 11:50 蘆葦 閱讀(824) 評論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 亚洲日本一线产区和二线产区对比| 皇色在线免费视频| 亚洲AV成人精品日韩一区18p| 国产精品免费久久久久电影网| 亚洲视频在线免费观看| 免费无码A片一区二三区| 男女污污污超污视频免费在线看| 亚洲无线码在线一区观看| 6080午夜一级毛片免费看6080夜福利| 亚洲精品色播一区二区| 国产gv天堂亚洲国产gv刚刚碰| 8888四色奇米在线观看免费看| 亚洲精品国产suv一区88| 亚洲中文字幕日产乱码高清app| 91频在线观看免费大全| 五月婷婷免费视频| 亚洲一级免费毛片| 久久精品国产亚洲5555| 五月婷婷综合免费| 精品久久久久久国产免费了| 亚洲天堂2016| 亚洲av日韩av天堂影片精品| 国产精品无码一二区免费| 在线成人爽a毛片免费软件| 免费人成动漫在线播放r18| 亚洲国产一区在线观看| 怡红院亚洲怡红院首页| 免费高清小黄站在线观看| 久久国产精品免费专区| 国产成人久久精品亚洲小说| 亚洲午夜精品国产电影在线观看| 国内精品99亚洲免费高清| 高清国语自产拍免费视频国产| 一级做a爰全过程免费视频| 国产免费牲交视频免费播放| 亚洲欧美熟妇综合久久久久| 亚洲国产成人片在线观看无码| 国产成人精品免费直播 | 鲁大师在线影院免费观看| 新最免费影视大全在线播放| 亚洲午夜无码久久久久小说|