空間站

          北極心空

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



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

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

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

          //查詢employee表中每周工作時間大于40小時的研究人員
          Extent ex=pm.getExtent(Employee.class,false);
          //獲得一個Query Query query=pm.newQuery();
          //設置這個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各個接口的使用方法有一個粗略的印象,以后實際的應用中JDO接口也都是這樣使用的。

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

          image

          posted on 2006-12-11 11:50 蘆葦 閱讀(826) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 恭城| 威远县| 大余县| 勐海县| 邵东县| 侯马市| 河池市| 张家港市| 扶风县| 辽中县| 常州市| 当阳市| 新化县| 乐安县| 广水市| 高州市| 新兴县| 元江| 门源| 毕节市| 诸城市| 繁昌县| 平远县| 临安市| 特克斯县| 和硕县| 西宁市| 辰溪县| 调兵山市| 手游| 招远市| 克拉玛依市| 松桃| 利津县| 永胜县| 临夏县| 永新县| 涪陵区| 台北市| 乌拉特中旗| 镇江市|